2017-04-09 74 views
0

我在玩Python的多處理模塊。我開始這個程序:爲什麼我的過程按順序執行?

import multiprocessing 

def worker(num): 
    """thread worker function""" 
    print 'Worker:', num 
    return 

if __name__ == '__main__': 
    for i in range(5): 
     p = multiprocessing.Process(target=worker, args=(i,)) 
     p.start() 

令我驚訝的是,結果總是這樣:

Worker: 0 
Worker: 1 
Worker: 2 
Worker: 3 
Worker: 4 

我會想到的是,工人們以不同的順序輸出不時,但從來沒有無論我運行該程序多少次都會發生。我誤解了什麼?

+0

這些進程是按順序啓動的,而不是同時啓動。 –

+0

@ IgnacioVazquez-Abrams您的評論可能會誤導您。請參閱下面的Reut的答案。 – zell

+0

添加隨機睡眠不會使我的評論無效。 –

回答

1

你的代碼很好,它只是非常快。嘗試添加一些抖動:

import multiprocessing 
from random import randint 
from time import sleep 

def worker(num): 
    """thread worker function""" 
    sleep(randint(0, 5)) 
    print 'Worker:', num 
    return 

if __name__ == '__main__': 
    for i in range(5): 
     p = multiprocessing.Process(target=worker, args=(i,)) 
     p.start() 
+0

太棒了!有用! – zell

相關問題