2016-10-07 70 views
0

首先,我是多處理新手,我似乎無法做出一個非常簡單和直接的示例工作。這是我工作的例子:python多處理返回錯誤'模塊'對象沒有屬性'myfunc'

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

你的例子在這裏工作得很好。你確定你沒有「簡化」代碼嗎? –

+0

你是如何運行該程序的?這是在Windows上嗎? – tdelaney

+0

我在windows上,我用python 2.7在Anaconda中運行它,代碼和上面的代碼完全一樣,沒有什麼更多的東西!我直接在IDE中的控制檯上運行它 –

回答

0

蟒蛇不喜歡多處理,如解釋in this 答案。

從答案:

這是因爲一個事實,即多不交互式解釋很好地工作。主要原因是在Windows中沒有fork()函數。這是在他們的網頁上解釋的。

謝謝!

相關問題