2016-01-20 82 views
0

我運行了下面的代碼,但它沒有輸出任何東西。我甚至包括了參數[i]但沒有。Muliprocessing模塊不能按預期的方式工作:不輸出

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() 
The expected output is: 

    worker, 
    worker, 
    worker, 
    worker, 
    worker 

感謝您的建議。

回答

0

我無法重現它,它按預期工作。這可能是因爲腳本運行速度太快。在該過程有機會寫入標準輸出之前,程序到達結尾,因此無法看到結果。

等待工作完成。

for i in jobs: i.join() 
+0

它只是無盡的運行。 – user2274879

0

我剛剛找到了解決方案。這些項目必須是put in a q,然後您從q中一個接一個地依次輸入get。請參閱下面的解決方案,可能會有更好的解決方案,但這種方式完美無缺

from multiprocessing import Process, Queue 
def worker(q): 
    """worker function""" 
    q.put('Worker') 

q=Queue()  
jobs=[] 
if __name__ == '__main__': 
    for i in range(5): 
     p = Process(target=worker, args=(q,)) 
     p.start() 
     print q.get() 
     p.join() 

我希望能找到其他解決方案。

相關問題