阅读背景:

0715py:pipe实现单生产者多消费者模型

来源:互联网 
# 使用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



你的当前访问异常,请进行认证后继续阅读剩余内容。

分享到: