multiprocessing import Process,Queue 进程间的通信

# -*-  coding: utf-8  -*-
from multiprocessing import Process,Queue
import time

def zhuanchang(hc,name,n):  #n 代表10箱砖,每箱10000块
    while n > 0:
        print(f'{name}还有{n}车砖要生产')
        time.sleep(0.5)
        hc.put([i for i in range(10000)])
        n -= 1
    else:
        hc.put(name)
        print(f"工厂{name}生产完成,下班啦")

def gongren(hc,name,gongchang):  # hc 代表队列的货车
    while gongchang:
        zhuan = hc.get()
        if zhuan in gongchang:
            hc.put(zhuan)
            gongchang.remove(zhuan)
        else:
            print(f'{name}搬了{len(zhuan)}块砖')

    print(f'工人{name},下班回家了')



if __name__ == '__main__':
    huoche = Queue()  # 创建队列,两个进程,通过队列进行通信
    p  = Process(target=zhuanchang,args=(huoche,'砖厂A',5))
    p.start()
    p1  = Process(target=zhuanchang,args=(huoche,'砖厂B',15))
    p1.start()

    time.sleep(1) # 先执行工厂
    p2 = Process(target=gongren, args=(huoche, '张三' ,['砖厂A','砖厂B']))
    p3 = Process(target=gongren, args=(huoche, '李四' ,['砖厂A','砖厂B']))
    p2.start()
    p3.start()

    p.join()
    p1.join()
    p2.join()
    p3.join()

猜你喜欢

转载自blog.csdn.net/haohaomax1/article/details/109695748
今日推荐