from multiprocessing import Process, Lock
def f(l, i):
l.acquire()
print 'hello world', i
l.release()
if __name__ == '__main__':
lock = Lock()
for num in range(10):
Process(target=f, args=(lock, num)).start()
有時候我無序的輸出,如:
hello world 0
hello world 1
hello world 2
hello world 4
hello world 3
hello world 6
hello world 5
hello world 7
hello world 8
hello world 9
需要注意的是4前打印3和6印在5之前。爲什麼?
一行10人在一個房間裏,然後當你大喊「走」時,他們都必須穿過和走出單門。他們以什麼順序離開? – 2013-02-27 20:41:24
如果您希望進程順序運行,請勿使用'multiprocessing'。您可以使用正確的同步原語強制進行順序計算,但是爲什麼?只需在一個過程中一個接一個地運行它們。另一方面,如果你只是想按順序獲得_results_,那就很有道理,並且有辦法做到這一點(如果你可以使用一個池而不是一個單獨的進程,每個任務都是微不足道的;不平凡但仍然非常簡單如果你不能)。 – abarnert 2013-02-27 20:59:12