# -*- 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()
multiprocessing import Process,Queue 进程间的通信
猜你喜欢
转载自blog.csdn.net/haohaomax1/article/details/109695748
今日推荐
周排行