我想使用python's
multiprocessing
模块来使用多核Linux服务器。
我需要所有进程都具有对同一共享内存的读/写访问权限。
不是使用list
或queue
,而是可以将多维numpy
数组作为共享对象吗?
答案 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的使用率,并且比其他方法更少麻烦:)