9

我最近一直在学习 Python 多处理,但遇到了障碍。我有一个 lerge 稀疏 SciPy 数组(CSC 格式),我需要在 5 个工作进程之间以只读格式共享它。我读过这个这个(numpy-shared),但这似乎只适用于密集类型。

我如何在 5 个多处理 Process 对象之间共享 scipy.sparse.csc_matrix() 而不复制(或最少复制)?即使是 numpy-shared 方法似乎也需要复制整个数组,即便如此,我也不能只将 scipy.sparse 转换为 mp.Array()。谁能帮我指出正确的方向?

谢谢!

4

1 回答 1

4

我无法帮助您解决问题的多处理部分,但是 CSC 稀疏矩阵只不过是三个 numpy 数组。您可以通过执行以下操作实例化另一个稀疏矩阵 ,与稀疏矩阵b共享相同的内存对象a

import scipy.sparse as sps

b = sps.csc_matrix((a.data, a.indices, a.indptr), shape=a.shape, copy=False)

a.dataa.indices并且a.indptr是您希望在进程之间共享的三个 numpy 数组,如果可以做到这一点,那么在每个进程中实例化一个稀疏矩阵将是一项廉价的操作。

于 2013-07-16T21:52:07.243 回答