多处理错误

时间:2014-06-25 16:47:04

标签: python multiprocessing

在Windows平台上,这两行导致Python代码执行在无限循环中运行,每个循环从脚本开头开始:

import multiprocessing as mp
manager=mp.Manager()

在Mac上运行良好。这是什么原因?它成功导入import multiprocessing as mp。但是在manager=mp.Manager()上它会中断(没有错误)并跳回到代码的第一行。

1 个答案:

答案 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()