2015-03-30 41 views
0

我希望能夠動態地創建基於其定義了子的輸入文件中的父元素和子元素之間的子進程和管道。蟒多處理動態創建的過程和管

我可以創建子進程,但我需要能夠創建管道傳送到特定節點,並使用這些管道發送特定的處理數據:

if __name__ == '__main__': 
    q = mp.Queue() 
    t = mp.Process(name="transactor", target=t, args=("transaction.csv",)) 
    nodes = [mp.Process(name=str(n), target=f, args=(n,)) for n in nodeArray] 

    for node in nodes: 
     node.start() 

我的問題的事實,我做規定不明白,如果創建的進程數量可能會改變,如果只知道目標節點或孩子的身份,如何創建可變數量的管道並選擇正確的管道進行通信?

我有點小白,當談到蟒蛇,我看到很多使用Python的mulitprocessing庫進行簡單的父子進程和管道,但沒有什麼

回答

0

創建你管的很好的例子,當你創建過程,然後返回Process an Pipe的元組。

import multiprocessing as mp 

def mkproc(func): 
    parent_conn, child_conn = mp.Pipe() 
    p = mp.Process(func, args=(child_conn,)) 
    p.start() 
    return (p, parent_conn) 

呼籲mkproc創建進程,結果存儲在一個列表之後;

allprocs = [mkproc(f) for f in (foo, bar, baz)] 

allproc內容現在是(ProcessPipe)元組的列表。如果遍歷列表,則擁有該進程和屬於它的管道;

for proc, conn in allprocs: 
    # do something with the process or pipe. 
+0

謝謝羅蘭。我想我明白你正試圖在這裏實現什麼,但我發現我遇到的錯誤:'斷言組是無,「組參數必須是無,now'' – p0815 2015-04-14 21:44:04

+0

我後來應用這個到我的實際代碼,並發現它的運作好。 – p0815 2015-04-25 15:53:36

相關問題