2017-04-09 4 views
0

나는 파이썬의 멀티 프로세싱 모듈을 가지고 놀고있다. 나는이 프로그램을 시작 : 놀랍게도내 프로세스가 순차적 인 순서로 실행되는 이유는 무엇입니까?

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