我有一个60GB的SciPy阵列(矩阵),必须在5个以上的multiprocessing
Process
对象之间共享。我看过numpy-sharedmem,并在SciPy列表上阅读了此讨论。似乎有两种方法- numpy-sharedmem
和使用a multiprocessing.RawArray()
并将NumPy dtype
s 映射到ctype
s。现在,这numpy-sharedmem
似乎是要走的路,但是我还没有看到一个很好的参考示例。我不需要任何种类的锁,因为阵列(实际上是一个矩阵)将是只读的。现在,由于它的大小,我想避免复制。这听起来像是正确的方法是创建唯一的数组作为副本sharedmem
数组,然后将它传递给Process
对象?几个特定的问题:
实际将sharedmem句柄传递给子对象的最佳方法是Process()
什么?我是否需要一个队列来传递一个数组?管道会更好吗?我可以仅将它作为参数传递给Process()
子类的init(我假设它是腌制的)吗?
在上面链接的讨论中,提到numpy-sharedmem
不是64位安全的吗?我肯定使用了一些不是32位可寻址的结构。
该RawArray()
方法是否需要权衡?慢一点,孩子吗?
numpy-sharedmem方法是否需要任何ctype到dtype的映射?
有没有人举一些开源代码的例子呢?我是一个非常动手的知识,如果没有任何好的榜样,很难使它成功。
如果有任何额外的信息,我可以提供帮助澄清此为他人,请评论,我会补充。谢谢!
这需要在Ubuntu Linux和运行可能的Mac OS,但便携性是不是一个巨大的关注。
相关分类