Python - 在进程之间共享一个Numpy数组?

时间:2011-07-04 23:42:35

标签: python numpy

我想使用python's multiprocessing模块来使用多核Linux服务器。

我需要所有进程都具有对同一共享内存的读/写访问权限。

不是使用listqueue,而是可以将多维numpy数组作为共享对象吗?

3 个答案:

答案 0 :(得分:8)

我想我知道你在找什么:https://bitbucket.org/cleemesser/numpy-sharedmem/issue/3/casting-complex-ndarray-to-float-in

网页上有一个简短的描述:Sturla Molden和G. Varoquaux的numpy共享内存模块,可以很容易地以NumPy阵列的形式在进程之间共享内存。最初发布到SciPy用户邮件列表。

我,我自己就是这样使用它。在进程之间共享NumPy数组。对我来说效果很好。

答案 1 :(得分:5)

看看this。我似乎并不容易,但这是可行的。

编辑:链接已损坏,我已链接到另一个副本。

答案 2 :(得分:0)

我发现即使你没有在fork()一堆子进程之后修改你的numpy数组,你仍然会看到你的RAM由于某种原因看到了对象写入对象的子进程。“/ p >

您可以通过设置

来限制(或完全缓解?)此问题
"yourArray.flags.writeable = False"

BEFORE fork()'ing / Pool()',这似乎可以保持RAM的使用率,并且比其他方法更少麻烦:)