首页 > 系统服务 > 详细

多进程间通信

时间:2019-03-19 15:48:00      阅读:143      评论:0      收藏:0      [点我收藏+]

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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!