zoukankan      html  css  js  c++  java
  • 多进程间通信

    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()
  • 相关阅读:
    浏览器中包含什么?三个常驻线程?
    TCP粘包和拆包
    TCP有限状态机
    TCP的拥塞控制
    TCP滑动窗口实现流量控制
    http状态码及意义
    OSI七层结构
    浏览器的event loop
    history api
    表单提交的方式
  • 原文地址:https://www.cnblogs.com/zz1314/p/10559001.html
Copyright © 2011-2022 走看看