我有一个60 5+的SciPy阵列(矩阵),必须在5+ multiprocessing
Process
对象之间共享。我在SciPy列表上看过numpy-sharedmem和this discussion。似乎有两种方法--numpy-sharedmem
和使用multiprocessing.RawArray()
以及将NumPy dtype
s映射到ctype
s。现在,numpy-sharedmem
似乎是可行的方法,但我还没有看到一个好的参考示例。我不需要任何类型的锁,因为数组(实际上是一个矩阵)将是只读的。现在,由于它的大小,我想避免复制。听起来正确的方法是创建数组的唯一副本作为sharedmem
数组,然后将其传递给Process
对象?有几个具体的问题:
Process()
es的最佳方式是什么?我需要一个队列来传递一个数组吗?一根烟斗会更好吗?我能不能把它作为参数传递给Process()
子类的初始化(我假设它是pickled的)?numpy-sharedmem
不是64位安全的?我肯定在使用一些不是32位addressable.RawArray()
方法上有什么折衷?更慢,更麻烦?如果我可以提供任何其他信息来帮助其他人澄清这一点,请发表评论,我会添加的。谢谢!
它需要在Ubuntu Linux甚至Mac OS上运行,但可移植性并不是一个大问题。
https://stackoverflow.com/questions/17785275
复制相似问题