2016-11-15 67 views
0

我有這樣的代碼:爲什麼多處理不起作用?

import multiprocessing 


def worker(): 
    print 'Worker' 
    return 

if __name__ == '__main__': 
    jobs = [] 
    for i in range(5): 
     p = multiprocessing.Process(target=worker) 
     jobs.append(p) 
     p.start() 

無論出於何種原因,它打印「工人」兩次,然後停止。有誰知道爲什麼?我究竟做錯了什麼?

+0

測試在2.7.10和3.5.2 ....我的作品,你能提供更多的細節嗎?也許版本號,操作系統等等... – MooingRawr

+0

它爲我打印五次。 Python 2.7。也許是環境問題? – DejaVuSansMono

+0

這是不可重現的。 –

回答

2

在定義的「核心」值上啓動Python中的多處理任務時,最好選擇創建一個池並啓動該池內的進程。

pool = multiprocessing.Pool() 
for i in range(5): 
    pool.apply_async(worker) 
pool.close() 

但是,如果你喜歡這樣做對你的方式,我認爲你必須添加p.join()

import multiprocessing 


def worker(): 
    print 'Worker' 
    return 

if __name__ == '__main__': 
    jobs = [] 
    for i in range(5): 
     p = multiprocessing.Process(target=worker) 
     jobs.append(p) 
     p.start() 
     p.join() 
相關問題