python多处理返回错误'模块'对象没有属性' myfunc'

时间:2016-10-07 19:53:51

标签: python multiprocessing python-2.x

首先,我对多处理非常陌生,而且我似乎无法做出一个非常简单直接的示例工作。这是我合作的例子:

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进行控制台工作却没有用。谁知道为什么?

1 个答案:

答案 0 :(得分:-1)

Anaconda并不像解释in this那样喜欢多处理  答案。

答案:

  

这是因为多处理在交互式解释器中不能很好地工作。主要原因是没有fork()函数适用于windows。它在自己的网页上进行了解释。

谢谢!