San*_*noj 7 python anaconda python-multiprocessing
我在Windows 7 64位上运行一个简单的"Hello World"程序,其规格如下:
Python 3.4.3 | Anaconda 2.3.0 (64-bit) | [MSC v.1600 64 bit (AMD64)] IPython 4.0.0
Run Code Online (Sandbox Code Playgroud)
该程序:
from multiprocessing import Process, freeze_support
def f():
print ('hello world!')
if __name__ == '__main__':
#freeze_support()
Process(target=f).start()
Run Code Online (Sandbox Code Playgroud)
给出以下错误:
[I 15:02:23.855 NotebookApp] Saving file at /uhc/FeatureContributionToK-meansClu
sterWithPC.ipynb
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "C:\Anaconda3\lib\multiprocessing\spawn.py", line 106, in spawn_main
exitcode = _main(fd)
File "C:\Anaconda3\lib\multiprocessing\spawn.py", line 116, in _main
self = pickle.load(from_parent)
AttributeError: Can't get attribute 'f' on module '__main__' (built-in)
Run Code Online (Sandbox Code Playgroud)
这是由于以下事实:在交互式解释器中,多重处理效果不佳。主要原因是在Windows中没有适用的fork()函数。在他们的网页上对此进行了说明。
“此包中的功能要求子模块必须可导入主模块。这在编程指南中已涉及到,但是在这里值得指出。这意味着某些示例,例如多处理。池示例在交互式环境中不起作用。口译员。”
https://docs.python.org/2/library/multiprocessing.html#windows
如果在多处理中使用池功能,也会出现同样的问题。在这篇文章中已解决。因此,您可以使用该方法执行并行处理的想法。
Python多重处理apply_async永远不会在Windows 7上返回结果
希望它对您有用。
归档时间: |
|
查看次数: |
1794 次 |
最近记录: |