【发布时间】:2016-10-07 19:53:51
【问题描述】:
首先,我对多处理非常陌生,我似乎无法制作一个非常简单明了的示例。这是我使用的示例:
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 的控制台将无法工作。有人知道为什么吗?
【问题讨论】:
-
您的示例在这里运行良好。你确定你没有“简化”代码吗?
-
你是如何运行程序的?这是在 Windows 上吗?
-
我在windows上,我用python 2.7在Anaconda中运行,代码和上面一模一样,仅此而已!我直接在IDE的控制台中运行
-
它在 linux 和 python3 上运行良好(在修复 2 对 3 问题之后)做
ipython3 test.py。 Windows 是不同的,因为它必须腌制更多的执行环境来运行子进程。我认为windows实现找不到你的模块来完成unpickling。你如何运行它可能有助于确定原因。 -
@tdelaney 就像我直接在 cmd 中运行代码一样,它工作得很好,但是使用 anaconda 的控制台将无法工作。有人知道为什么吗?
标签: python multiprocessing python-2.x