首先,我对多处理非常陌生,而且我似乎无法做出一个非常简单直接的示例工作。这是我合作的例子:
import multiprocessing
def worker():
"""worker function"""
print 'Worker'
return
if __name__ == '__main__':
jobs = []
for i in range(5):
p = multiprocessing.Process(target=worker)
jobs.append(p)
p.start()
每次运行代码时,我都会多次收到此错误:
C:\Anaconda2\lib\site-packages\IPython\utils\traitlets.py:5: UserWarning: IPython.utils.traitlets has moved to a top-level traitlets package.
warn("IPython.utils.traitlets has moved to a top-level traitlets package.")
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "C:\Anaconda2\lib\multiprocessing\forking.py", line 381, in main
self = load(from_parent)
File "C:\Anaconda2\lib\pickle.py", line 1384, in load
return Unpickler(file).load()
File "C:\Anaconda2\lib\pickle.py", line 864, in load
dispatch[key](self)
File "C:\Anaconda2\lib\pickle.py", line 1096, in load_global
klass = self.find_class(module, name)
File "C:\Anaconda2\lib\pickle.py", line 1132, in find_class
klass = getattr(mod, name)
AttributeError: 'module' object has no attribute 'worker'
我知道这个问题非常模糊,但如果有人能指出我正确的方向,我会很感激。
我在Windows上,我使用python 2.7在Anaconda中运行它,代码与上面完全相同,仅此而已!我直接在IDE的控制台中运行它
编辑:看起来当我在命令提示符下直接运行代码时,它工作得很好,但使用Anaconda进行控制台工作却没有用。谁知道为什么?答案 0 :(得分:-1)
Anaconda并不像解释in this那样喜欢多处理 答案。
答案:
这是因为多处理在交互式解释器中不能很好地工作。主要原因是没有fork()函数适用于windows。它在自己的网页上进行了解释。
谢谢!