from multiprocessing import Queue
from multiprocessing import Process
import os
def produce(name,q):
for i in range(10):
pid = os.getpid()
msg = f'这是{name}做的{i}个包子'
q.put(msg)
def cursumer(name,q):
try:
for i in range(100):
msg = f'{name}吃的{q.get(timeout=3)}'
print(msg)
except Exception:
return
if __name__=='__main__':
q = Queue()
p1 = Process(target=produce,args=('lg',q,))
p2 = Process(target=cursumer, args=('wx',q,))
p1.start()
p2.start()
队列通信引用Queue模块,先进先出原则。它有两个方法,put是往里放数据,get是取数据。当里面没数的时候,put和get都会阻塞住,知道里面有数据。timeout是等待时长,超过时限就会报错。block=True是默认阻塞不会报错,block=False是阻塞后就报错。