# 使用方法类似于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()