我试图在Ipython Notebook中使用多处理模块,但是当我执行我的代码时,它崩溃了内核:
from multiprocessing import Pool
def f(x):
return x*x
p = Pool(8)
p.map(f, [1, 2, 3])
文档提供了这些信息:
此程序包中的功能要求子项可以导入 main 模块。这在编程指南中有所涉及,但值得在此指出。这意味着某些示例(例如multiprocessing.Pool示例)将无法在交互式解释器中使用
但是,该模块似乎适用于某些模块,例如本教程:
其他stackoverflow线程表明您应该重新安排代码,如下所示:
yet another confusion with multiprocessing error, 'module' object has no attribute 'f'
但我仍然遇到同样的错误:
AttributeError: 'module' object has no attribute 'f'
我使用的是Windows 8,Python 2.7.12以及最新版本的IPython Notebook / Anaconda发行版。
这个错误是否有明确的解决方案?
错误的来源是否真的缺少 if __name__ ==" __ main __":声明?
这是一个特定于Windows的问题,还是也适用于unix?