2012-06-27 31 views

回答

0

Pool.map生成多個進程來實現某個任務。

當你有一個任務單位,你想在一個單獨的過程中工作,那麼你可以直接產生過程。

def execute_new_work(work=somefunction): 
    p = multiprocessing.Process(target=work) 
    p.start() 

池可用於管理固定數量的工人。

如果已知使用相同功能但並行處理的工作單元數量,則可以使用pool.map,而不是使用for loop。這只是更方便和容易

pool_size = multiprocessing.cpu_count() * 2 
pool = multiprocessing.Pool(processes=pool_size, 
          initializer=start_process, 
          ) 
outputs = pool.map(workon_fucntion, inputs) 

正如你所看到的,這是python和python中的map函數的回憶。你可以用地圖做什麼,你可以用for loop

這裏唯一需要注意的是,工作進程是事先確定的,池管理工作分配給工作人員,這是相當不錯的。

+0

如果我有多個參數並運行Python 2.6,我應該使用Process嗎? – idealistikz

+0

@idealistikz:不,我認爲多重爭論不應該是一個問題。確定你是否需要一個固定的工作人員,而不僅僅是一次性的要求。如果它是一個關閉,那麼你可能會浪費工作人員在泳池中無所事事。 :) – pyfunc

+0

如果我要調用的函數需要多個參數,我應該使用Process嗎?如果我在for循環中使用Process,是不是產生了基於迭代次數的不同進程? – idealistikz

相關問題