消费者生产者模型

生产者生产的东西放到队列里,消费者消费掉东西。

import time
import random
from multiprocessing import Process,Queue
def consumer(q,name):  # 消费者
    while True:
        food = q.get()
        if food is None:  # 如果消费完了,就会得到一个None,然后结束
            print('%s获取到了一个空'%name)
            break
        print('%s消费了%s' % (name,food))
        time.sleep(random.randint(1,3))

def producer(name,food,q):  # 生产者
    for i in range(4):
        time.sleep(random.randint(1,3))
        f = '%s生产了%s%s'%(name,food,i)
        print(f)
        q.put(f)

if __name__  == '__main__':
    q = Queue(20)
    p1 = Process(target=producer,args=('小明','包子',q))
    p2 = Process(target=producer, args=('小红','大饼', q))
    c1 = Process(target=consumer, args=(q,'小狗'))
    c2 = Process(target=consumer, args=(q,'小猪'))
    p1.start()
    p2.start()
    c1.start()
    c2.start()
    p1.join()  # 感知子进程生产完了
    p2.join()  # 感知子进程生产完了
    q.put(None)  # 就放入一个None
    q.put(None)  # 就放入一个None
原文地址:https://www.cnblogs.com/aaronthon/p/9826728.html