2017-04-09 62 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