2016-12-05 17 views
0

我試圖創建一個程序,它在它的本質是這樣的:使用worker.run()進行多處理可以在系列中工作而不是並行嗎?

import multiprocessing 
import time 

def worker(numbers): 
    print(numbers) 
    time.sleep(2) 
    return 

if __name__ =='__main__': 
    multiprocessing.set_start_method("spawn") 
    p1 = multiprocessing.Process(target=worker, args=([0,1,2,3,4],)) 
    p2 = multiprocessing.Process(target=worker, args=([5,6,7,8],)) 

    p1.start() 
    p2.start() 

    p1.join() 
    p2.join() 

    while(1): 
     p1.run() 
     p2.run() 
     p1.join() 
     p2.join() 
     print('Done!') 

第一次的過程是通過p#.start()叫,它們並行執行。第二次通過p#.run()方法調用它們時,它們將被串行執行。

如何確保後續的方法調用也是並行執行的?

編輯:過程一起開始很重要。不會發生進程1被執行兩次而進程2只被執行一次的情況。

編輯:我也應該注意到,此代碼對樹莓派V3模型B.

回答

0

運行據我所知,一個線程只能啓動一次。之後,當你調用run方法時,它只是一個簡單的函數。這就是爲什麼它不是平行運行。

+0

所以你的意思是你可以開始一次過程,並行運行。如果你想再次並行執行,你需要終止並創建一個新進程,或者把進程放到一個等待新輸入的循環中? – Etruscian

+0

是的,你明白了。 – skyblue0715

相關問題