"""
pipe: -- ( 队列 = 管道 + 锁 )
# 数据不安全
# 可以加锁控制安全性
# 当管道全部关闭 只剩接收管道 时 并且没有 可以send 的内容
的时候会报一个 EOFError 的错误
@ 解决方案:
在处理异常时(try) 将管道(接收管道)全部关闭
# 主进程中的 conn1 会找到子进程中的 conn2
# 主进程中的 conn2 会找到子进程中的 conn1
"""
from multiprocessing import Pipe,Process
def fn(conn1,conn2):
conn2.close()
while True:
try:
msg = conn1.recv()
print(msg)
except EOFError:
conn1.close()
print('here')
break
if __name__ == '__main__':
conn1,conn2 = Pipe()
p = Process(target=fn,args=(conn1,conn2))
p.start()
conn1.close()
for i in range(10):
conn2.send('hello')
conn2.close()