繁体   English   中英

使用多处理模块的简单玩具示例使计算机崩溃

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM