【问题标题】:python multiprocessing returning error 'module' object has no attribute 'myfunc'python多处理返回错误'模块'对象没有属性'myfunc'
【发布时间】: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


【解决方案1】:

Anaconda 不喜欢多重处理,正如 in this 所解释的那样 回答。

来自答案:

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

谢谢!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-01-24
    • 2011-06-19
    • 1970-01-01
    • 1970-01-01
    • 2020-07-02
    • 1970-01-01
    • 2020-12-04
    相关资源
    最近更新 更多