gpt4 book ai didi

Python 多处理内存泄漏与 enthought canopy?

转载 作者:行者123 更新时间:2023-12-01 05:38:13 26 4
gpt4 key购买 nike

def print_square(i):
print str(i*i)

from multiprocessing import Pool
p = Pool(1)
for i in range(10):
p.apply_async(print_square, args=(i,))
p.close()
p.join()

在 Python 2.7 上使用 64 位 Canopy 的 Windows 8 上产生无限进程并使我的机器崩溃。为什么?

最佳答案

在 Windows 上,由于没有 fork,多处理会生成一个新进程,运行 python 并导入调用模块。

如果导入调用模块本身会产生一个新进程,那么您将自己进行 fork 炸弹。为了防止这种情况发生,请将生成新进程的代码放入其中

if __name__ == '__main__':

这是有效的,因为导入模块时不会执行 if-statement 内的代码。

文档中有关于此的警告。请参阅标题为 Safe importing of main module .

<小时/>

所以使用

from multiprocessing import Pool


def print_square(i):
print str(i * i)

if __name__ == '__main__':
p = Pool(1)
for i in range(10):
p.apply_async(print_square, args=(i,))
p.close()
p.join()

关于Python 多处理内存泄漏与 enthought canopy?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18340112/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com