首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在多进程之间共享大型只读Numpy数组

在多进程之间共享大型只读Numpy数组
EN

Stack Overflow用户
提问于 2013-07-22 18:31:17
回答 6查看 29.9K关注 0票数 95

我有一个60 5+的SciPy阵列(矩阵),必须在5+ multiprocessing Process对象之间共享。我在SciPy列表上看过numpy-sharedmem和this discussion。似乎有两种方法--numpy-sharedmem和使用multiprocessing.RawArray()以及将NumPy dtypes映射到ctypes。现在,numpy-sharedmem似乎是可行的方法,但我还没有看到一个好的参考示例。我不需要任何类型的锁,因为数组(实际上是一个矩阵)将是只读的。现在,由于它的大小,我想避免复制。听起来正确的方法是创建数组的唯一副本作为sharedmem数组,然后将其传递给Process对象?有几个具体的问题:

  1. 将sharedmem句柄实际传递给子Process()es的最佳方式是什么?我需要一个队列来传递一个数组吗?一根烟斗会更好吗?我能不能把它作为参数传递给Process()子类的初始化(我假设它是pickled的)?
  2. 在我上面链接的讨论中,提到了numpy-sharedmem不是64位安全的?我肯定在使用一些不是32位addressable.
  3. Are的结构,在RawArray()方法上有什么折衷?更慢,更麻烦?
  4. 我需要为numpy-sharedmem方法做ctype到dtype的映射吗?
  5. 谁有这样做的OpenSource代码的例子?我是一个非常亲身实践的人,如果没有任何好的例子,我很难让它工作。--

如果我可以提供任何其他信息来帮助其他人澄清这一点,请发表评论,我会添加的。谢谢!

它需要在Ubuntu Linux甚至Mac OS上运行,但可移植性并不是一个大问题。

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17785275

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档