python多处理模块,共享多维数组

时间:2016-06-06 19:02:48

标签: python multiprocessing shared-memory multiprocessing-manager

我有一个给出两个参数的代码,(k,m)将返回一个4d numpy数组,我的要求是我需要计算这个数组的可能值为(k,m),k,m< N并加起来。这是串行慢的,所以我试图在python中学习多处理模块来做到这一点。 https://docs.python.org/2/library/multiprocessing.html

基本上我想用我的8个内核并行计算这些4d阵列并将它们全部加起来。现在的问题是如何设计这个。每个阵列大约100 MB,N大约20,因此无法在队列中存储20 ** 2 * 100 MB。解决方案是拥有一个共享内存对象,一个结果数组,每个进程将继续添加结果。

多处理有两种方法可以实现,使用共享内存或服务器进程。他们似乎都不支持mutlidim数组。任何人都可以建议实施我的计划吗? Thx提前。

1 个答案:

答案 0 :(得分:1)

一种方法是在父进程中创建memory mapped arrays,并将它们传递给子进程以填充。另外,对于每个映射的数组,您应该有multiprocessing.Event,因此chld进程可以向父进程发信号通知数组已完成。