Python -- 如何在进程间共享Numpy数组?
我想在一个多核的Linux服务器上使用python
的multiprocessing
模块。
我需要所有的进程都能读写同一块共享内存。
我想知道,除了使用list
或者queue
,能不能把一个多维的numpy
数组作为共享对象呢?
3 个回答
1
我发现即使在创建了一堆子进程之后,没有对你的numpy数组进行任何修改,内存使用量还是会飙升。这是因为子进程在某种情况下会对这个对象进行“写时复制”。
你可以通过在调用
"yourArray.flags.writeable = False"
之前设置一些东西来限制(或者完全缓解?)这个问题,这样可以减少内存的使用,而且比其他方法简单多了 :)
9
我觉得我知道你在找什么:https://bitbucket.org/cleemesser/numpy-sharedmem/issue/3/casting-complex-ndarray-to-float-in
这个网页上有个简短的介绍:这是一个由Sturla Molden和G. Varoquaux开发的numpy共享内存模块,可以方便地在不同的进程之间共享NumPy数组的内存。最初是发在SciPy用户邮件列表上的。
我自己也是这样使用的。就是在不同的进程之间共享NumPy数组。对我来说效果非常好。
6
看看这个。虽然看起来不太简单,但其实是可以做到的。
补充:原来的链接失效了,我换了一个新的链接。