4

我有一个给定两个参数的代码, (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。解决方案是拥有一个共享内存对象,一个结果数组,每个进程将不断将结果添加到该数组中。

multiprocessing 有两种方法可以做到这一点,使用共享内存或服务器进程。它们似乎都不支持 mutlidim 数组。谁能建议一种方法来实现我的程序?提前谢谢。

4

1 回答 1

1

一种方法是在父进程中创建内存映射数组,并将它们传递给子进程进行填充。此外,您可能应该multiprocessing.Event对每个映射数组都有一个,因此 chld 进程可以向父级发出数组已完成的信号。

于 2016-06-06T20:18:59.570 回答