如何每两秒钟生产一个面包使用多线程?

时间:2017-09-28 02:18:50

标签: python multithreading

我想用多线程来模拟我们公司生产的面包,我想每两秒生产一个面包:

import threading
import time

def run(n):
    print ("product--%s" %n)
    time.sleep(2)

start_time = time.time()

for i in range(30):
    t = threading.Thread(target=run, args=("bread-%s"%i,))
    t.start()

但它似乎暂停两秒钟,它直接打印所有的面包:

product--bread-1
product--bread-2
product--bread-3
product--bread-4
product--bread-5
product--bread-6
product--bread-7
product--bread-8
product--bread-9
product--bread-10
product--bread-12
product--bread-11
product--bread-13
product--bread-14
product--bread-15
product--bread-16
product--bread-17
product--bread-18
product--bread-19
product--bread-20
product--bread-21
product--bread-22
product--bread-23
product--bread-24
product--bread-25
product--bread-26
product--bread-27
product--bread-28
product--bread-29
product--bread-30

time.sleep对我不起作用,如何实现我的要求? 我想每两秒生产一个面包,而不是一次生产所有面包。

1 个答案:

答案 0 :(得分:2)

来自join() document

  

加入(超时=无)

     

等到线程终止。这会阻塞调用线程,直到调用join()方法的线程终止 - 正常或通过未处理的异常 - 或者直到发生可选的超时。

您可以使用join()等待线程执行,加入每个新启动的线程。

for i in range(30):
    t = threading.Thread(target=run, args=("bread-%s"%i,))
    t.start()
    t.join()