gpt4 book ai didi

python - 在进程对象之间共享 SciPy 稀疏数组

转载 作者:太空狗 更新时间:2023-10-29 21:55:22 24 4
gpt4 key购买 nike

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

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

谢谢!

最佳答案

我无法帮助您解决问题的多处理部分,但 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.indicesa.indptr 是您希望在进程之间共享的三个 numpy 数组,如果您可以做到这一点,然后在每个进程中实例化一个稀疏矩阵将是一个廉价的操作。

关于python - 在进程对象之间共享 SciPy 稀疏数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17686865/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com