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()
  • 相关阅读:
    Clustering by fast search and find of density peaks
    《第一行代码》(二)
    TF-IDF
    《第一行代码》(一)
    《OpenCV入门》(三)
    OpenCV入门(二)
    协方差矩阵特征向量的意义
    ICA
    整数划分
    1144. The Missing Number (20)
  • 原文地址:https://www.cnblogs.com/zz1314/p/10559001.html
Copyright © 2011-2022 走看看