4.22

作业

一、书写生产者消费者代码

from multiprocessing import Process, JoinableQueue
import time,random

def producer(name, goods, q):
    for i in range(2):
        data = f'{name}生产了{goods}{i}号'
        time.sleep(random.randint(1, 2))
        print(data)
        q.put(f'{name}生产的{goods}{i}号')

def consumer(name, q):
    while True:
        goods = q.get()
        time.sleep(random.randint(1, 3))
        print('%s吃了%s' % (name, goods))
        q.task_done()


if __name__ == '__main__':
    q = JoinableQueue()
    p1 = Process(target=producer, args=('商家1', '秘制汉堡', q))
    p2 = Process(target=producer, args=('商家2', '奥利给', q))
    c1 = Process(target=consumer, args=('用户1', q))
    c2 = Process(target=consumer, args=('用户2', q))
    p1.start()
    p2.start()
    c1.daemon = True
    c2.daemon = True
    p1.join()
    p2.join()
    c1.start()
    c2.start()
    q.join()
    
'''
商家1生产了秘制汉堡0号
商家2生产了奥利给0号
商家2生产了奥利给1号
商家1生产了秘制汉堡1号
用户2吃了商家1生产的秘制汉堡0号
用户1吃了商家2生产的奥利给0号
用户2吃了商家2生产的奥利给1号
用户1吃了商家1生产的秘制汉堡1号
'''
posted @ 2020-04-23 21:25  祥SHAO  阅读(116)  评论(0)    收藏  举报