首页
学习
活动
专区
圈层
工具
发布

十、python学习笔记-进程-进程通信之Pipe

代码语言:javascript
复制
# 使用方法类似于socket,建立连接,一发一收
"""Pipe和socket
两者只是用法类似,没有什么直接关系
Pipe:线程间通信,send类型不限,recv没有大小限制,一发一收
socket:网络通信,send为bytes类型,recv有大小限制,一发一收
"""

from multiprocessing import Process, Pipe

"""
1、函数Foo用于子进程发送接收数据,参数conn为管道连接
2、建立父进程和子进程的管道使用parent_conn, child_conn接收‘parent_conn, child_conn = Pipe()’
3、创建多进程,将子进程的管道通过参数传递给Foo
"""
def foo(conn):
    conn.send('子进程发送数据')    # 子进程发送
    print(conn.recv())          # 子进程接收

    conn.close()


if __name__ == '__main__':
    parent_conn, child_conn = Pipe()        # 建立Pipe通信,父进程使用parent_conn收发,子进程使用child_conn收发
    p = Process(target=foo, args=(child_conn,))   # 建立子进程,传递child_conn
    p.start()
    print(parent_conn.recv())       # 父进程接收
    parent_conn.send('父进程回复数据')     # 父进程发送
    p.join()
下一篇
举报
领券