我想用多线程来模拟我们公司生产的面包,我想每两秒生产一个面包:
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对我不起作用,如何实现我的要求? 我想每两秒生产一个面包,而不是一次生产所有面包。
答案 0 :(得分:2)
加入(超时=无)
等到线程终止。这会阻塞调用线程,直到调用join()方法的线程终止 - 正常或通过未处理的异常 - 或者直到发生可选的超时。
您可以使用join()
等待线程执行,加入每个新启动的线程。
for i in range(30):
t = threading.Thread(target=run, args=("bread-%s"%i,))
t.start()
t.join()