0713py:Pipe类实现进程间通信

from multiprocessing import Process,Pipe,current_process

import pickle

# 创建管道两边的函数进行通信

# 创建左边管道
def func_left(argpipe):
    # aragpipe 参数是一个实例化的Pipe
    print("我是左边函数")
    # 用Pipe 的send()方法,发送序列化数据
    argpipe.send(pickle.dumps("left"))

    # 用Pipe 的recv()方法接收序列化数据
    resl = argpipe.recv()
    print("我是左边,我接受的是",pickle.loads(resl))
    print(">>>>>>>>>>>")


# 创建右边管道
def func_right(argpipe):
    # aragpipe 参数是一个实例化的Pipe
    print("我是右边函数")
    # 用Pipe 的send()方法,发送序列化数据
    argpipe.send(pickle.dumps("right"))

    # 用Pipe 的recv()方法接收序列化数据
    resr = argpipe.recv()
    print("我是右边,我接受的是",pickle.loads(resr))
    print("<<<<<<<<<<<<<")

# 主函数
def main():

    # Pipe实例化,必须实例化一对,且同时赋值
    leftp,rightp = Pipe()

    p_left = Process(target=func_left, args=(leftp,))

    p_right = Process(target=func_right,args=(rightp,))

    p_left.start()
    p_right.start()

    p_left.join()
    p_right.join()

    # 关闭管道
    leftp.close()
    rightp.close()


if __name__ == '__main__':
    main()

猜你喜欢

转载自blog.csdn.net/whqwjb/article/details/81041379
今日推荐