# 使用pipe 建立生产者和消费者模型
from multiprocessing import Process , current_process , Pipe
import pickle
# 创建生产者函数
def funcmake(argp):
# argp 参数是实例化的pipe
# 生产者,发送数据 采用pipe.send()
for x in range(15):
msgprint = "我是进程"+current_process().name+"我的pid是"+str(current_process().pid)+"发送数据:"+str(x)
print(msgprint)
argp.send(pickle.dumps(x))
# 创建消费者函数
def funcsale(argp):
# argp 参数是实例化的pipe
# 消费者接收数据,采用pipe.recv()
for x in range(5):
res = pickle.loads(argp.recv())
msgprint =("我是进程"+current_process().name
+"我的pid是"+str(current_process().pid)+"接收数据:"+str(res))
print(msgprint)
def main():
# 主函数
# 管道,只能生成一对,单管道
lmake,rsale = Pipe()
# 左边作为生产者的参数,只能传入一个函数
p1 = Process(target=funcmake,name="生产者",args=(lmake,))
# 消费者参数可以传入多个消费者函数
# 建立消费者列表
pr = []
# 消费者列表,增加其内容
for x in range(3):
# 管道的消费者参数,传入了多个子进程
pr.append(Process(target=funcsale,name="消费者%d"%x,args=(rsale,)))
p1.start()
for p in pr:
p.start()
p1.join()
for p in pr:
p.join()
lmake.close()
rsale.close()
if __name__ == '__main__':
main()
# 使用pipe 建立生产者和消费者模型
from multiprocessing