1.管道
管道,顾名思义,就是相当于一根管道,我们可以从多进程中导入这个模块,管道的实现是类似于socket连接。管道是如何实现“收发”机制的呢?
首先,管道的一端是发数据,另一端就是收数据,对于管道而言,收发数据都是双向的,接收数据端也可以发数据,反过来亦然如此。当我们从管道的一端发送一次数据时,另一端会接收一次数据,如果再接收一次,就会陷入阻塞。那么,如何才能消除阻塞呢?当我们把管道的另一端关闭之后,便不会陷入阻塞模式,而是会报错,产生EOF错误,从而我们可以获知,没有数据可以接收了!
# Author:Zhang Zhao from multiprocessing import Process from multiprocessing import Pipe def func(p): foo,son = p foo.close() while True: try: print(son.recv()) except EOFError as e: print(‘EOF err‘,e) break if __name__ == ‘__main__‘: foo,son = Pipe() p = Process(target=func,args=((foo,son),)) p.start() son.close() foo.send(‘hello‘) foo.send(‘hello‘) foo.send(‘hello‘) foo.close()
原文:https://www.cnblogs.com/zz1314/p/10559001.html