2017-05-21 36 views
0

我在與多處理器同步 下面的代碼的問題:Python的多不同步

from multiprocessing import Process 
list = [1,2,3,4,5] 
def function1(): 
     for i in range (5): 
      print list[i] 

if __name__ == '__main__': 
    for num in range(2): 
     Process(target=function1).start() 

結果是

11 
22 
33 
44 
55 

我要如何進程,以便工作? E.g:處理1工程其中i = 1,在平均時間進程2可與我= 2,依此類推?

+0

我想你會需要做的,而不是有兩個線程運行相同的一個2種不同的功能。 – alex

回答

1

的功能是什麼是印刷數字1到5無論哪個它正在被執行的過程,你看11,22的原因等是因爲這兩個進步在「並行」運行,所以它們打印價值「在同一時間」。

你需要的進程號傳遞給函數,所以它知道打印什麼,然後所有的功能,所要做的就是打印進程號。

這應該工作:

from multiprocessing import Process 
list = [1,2,3,4,5] 
def function1(x): 
    print x 

if __name__ == '__main__': 
    for num in range(2): 
     Process(target=function1, args=[list[num]]).start() 
+0

謝謝。有效! –

+0

這種方法對列表的每一個元素,這可能是矯枉過正創建一個過程。使用multiprocessing.Pool.map可能會更好 –