线程生产者消费者模型

#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()
View Code

 

posted @ 2019-05-08 23:47  rayh  阅读(57)  评论(0)    收藏  举报