使用python的multiprocessing模块,以下设计的示例以最小的内存要求运行:
import multiprocessing
# completely_unrelated_array = range(2**25)
def foo(x):
for x in xrange(2**28):pass
print x**2
P = multiprocessing.Pool()
for x in range(8):
multiprocessing.Process(target=foo, args=(x,)).start()
Run Code Online (Sandbox Code Playgroud)
取消注释的创建,completely_unrelated_array你会发现每个衍生的进程分配内存为completely_unrelated_array!这是一个更大的项目的最小例子,我无法弄清楚如何解决方法; 多处理似乎可以复制全局的所有内容.我并不需要共享内存对象,我只需要传递x和处理它没有整个程序的内存开销.
侧面观察:有趣的是print id(completely_unrelated_array)内部foo给出相同的值,暗示某些可能不是副本......