如何限制多处理进程的范围?

2024-04-26 00:22:58 发布

您现在位置:Python中文网/ 问答频道 /正文

使用python的^{}模块,以下人为的示例以最小的内存需求运行:

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()

取消注释completely_unrelated_array的创建,您会发现每个派生进程都为completely_unrelated_array的副本分配内存!这是一个很小的例子,说明了一个更大的项目,我不知道如何解决;多处理似乎可以复制所有全局的东西。我不需要共享内存对象,我只需要传入x,并在不占用整个程序内存开销的情况下处理它。

侧边观察:有趣的是,print id(completely_unrelated_array)内的foo给出了相同的值,这暗示了这可能不是拷贝。。。


Tags: 模块内存inimport示例forfoodef