#q.task_done() q.join()
import queue,time,random,threading
q=queue.Queue()
def Producer(name):
count=0
while count<10:
print("making....")
time.sleep(random.randrange(3))
q.put(count)
print("Prount %s has produced %s baozi"%(name,count))
q.task_done() #发信号通知消费者,包子已经做完了
count+=1
print("ok.....")
def Consumer(name):
count=0
while count<10:
time.sleep(random.randrange(4))
# if not q.empty():
q.join() #如果生产者没有task_done,这里就卡住了等待生产者的信号再执行下面的命令,相当于 wait()
data=q.get()
print("\033[32;1mConmuser %s has eat %s baozi..\033[0m"%(name,count))
# else:
print("no baozi anymore")
count+=1
p1=threading.Thread(target=Producer,args=("A君",))
c1=threading.Thread(target=Consumer,args=("B君",))
c2=threading.Thread(target=Consumer,args=("C君",))
c3=threading.Thread(target=Consumer,args=("D君",))
p1.start()
c1.start()
c2.start()
c3.start()