zoukankan      html  css  js  c++  java
  • python--pipe

    1.pipe

    除了使用队列外,还可以使用管道在进程间执行消息传递
    pipe([]duplex)
    在进程间创建一条管道,并返回元组(conn1,conn2),其中conn1和conn2是表示管道两端的Connection对象。默认控制下管道是双向的。如果将duplex设为False,conn1只能接受,conn2只能用于发送。

    2.code

    import multiprocessing  
      
    def consumer(pipe):  
        output_p,input_p=pipe  
        input_p.close()  
        while True:  
            try:          
                item=output_p.recv()  
            except EOFError:  
                break  
            print(item)  
        print('Consumer done')  
          
    def producer(sequence,input_p):  
        for item in sequence:  
            #将项放入队列  
            input_p.send(item)  
              
      
    if __name__=='__main__':  
        (output_p,input_p)=multiprocessing.Pipe()  
        '''''running consumer processing'''  
        consumer_p=multiprocessing.Process(target=consumer,args=((output_p,input_p),))  
        consumer_p.start()  
          
        #关闭生产者中管道  
        output_p.close()  
        '''''producing many Queues,run producer'''  
        sequence=[1,2,3,4,5]  
        producer(sequence,input_p)  
        input_p.close()  
        '''''waiting processing'''  
        consumer_p.join()
    

    应该特别注意管道端点的管理问题。如果生产者与消费者都没有使用管道某个端点就应该将其关闭,这就是为什么我们把生产者的输出管道关闭,并且把消费者的输入端关闭的原因。

  • 相关阅读:
    [LUOGU] P3275 [SCOI2011]糖果
    [BZOJ] 2287: 【POJ Challenge】消失之物
    [BZOJ] 2131: 免费的馅饼
    [JZOJ] 5835. Prime
    [JZOJ] 5837.Omeed
    UF_CAMGEOM_ask_custom_points 封装缺陷
    NX Open 切削层加载
    NX Open 图层说
    c++ Dll调用
    VC操作Excel文件编程相关内容总结
  • 原文地址:https://www.cnblogs.com/yangjing000/p/8205774.html
Copyright © 2011-2022 走看看