我有一个使用multiprocessing
. 我正在使用另一个脚本执行此模块runpy
。但是,这会导致 (1) 模块运行两次,以及 (2)multiprocessing
作业永远不会完成(脚本只是挂起)。
在我的最小工作示例中,我有一个脚本runpy_test.py:
import runpy
runpy.run_module('module_test')
和一个目录module_test包含一个空的__init__.py和一个__main__.py:
from multiprocessing import Pool
print 'start'
def f(x):
return x*x
pool = Pool()
result = pool.map(f, [1,2,3])
print 'done'
当我运行runpy_test.py时,我得到:
start
start
脚本挂起。
如果我删除pool.map
调用(或者如果我直接运行__main__.py,包括pool.map
调用),我会得到:
start
done
我在 Python 2.7.5 中的 Scientific Linux 7.6 上运行它。