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()

應該特別注意管道端點的管理問題。如果生產者與消費者都沒有使用管道某個端點就應該將其關閉,這就是為什么我們把生產者的輸出管道關閉,並且把消費者的輸入端關閉的原因。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM