在Windows平台上,这两行导致Python代码执行在无限循环中运行,每个循环从脚本开头开始:
import multiprocessing as mp
manager=mp.Manager()
在Mac上运行良好。这是什么原因?它成功导入import multiprocessing as mp
。但是在manager=mp.Manager()
上它会中断(没有错误)并跳回到代码的第一行。
答案 0 :(得分:2)
在Windows上,您必须使用multiprocessing
保护对if __name__ == "__main__":
的来电。有关为何需要此操作的详细信息,请参阅here。这应该可以正常工作:
import multiprocessing as mp
if __name__ == "__main__":
manager=mp.Manager()
修改强>
请注意,将multiprocessing
代码放在从if
块调用的函数中也是可以的。像这样:
import multiprocessing as mp
def func(x):
print("Got %s" % (x,))
def main():
p = multiprocessing.Pool()
results = p.map(func, range(0,5))
if __name__ == "__main__":
manager = mp.Manager()
main()