[英]Simple toy example using multiprocessing module crashes computer
尝试以下非常简单的示例会导致计算机停止运行,因此我必须重新启动。 检查任务管理器显示数百个“python.exe”任务:
import math
from multiprocessing import Pool
pool = Pool(processes=2)
print pool.map(math.sqrt, [1,4,9,16])
我使用的是双核cpu(i5 2467m)所以我认为以上都没问题。
我尝试设置processes=1
,这导致一个稍微不同的问题:任务永远不会完成,但它不会导致我的计算机冻结。
有任何想法吗?
我第一次玩multiprocessing
时遇到了同样的问题。 将池生成代码包装在if __name__ == '__main__'
块中。
import math
from multiprocessing import Pool
if __name__ == '__main__':
pool = Pool(processes=2)
print pool.map(math.sqrt, [1,4,9,16])
发生的事情是,在创建子进程时,您的模块正在进行unpickled并在无限递归中重新运行池生成代码。 使用if
块,产生代码将仅在模块的父实例中运行。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.