2
我想站在多處理模塊下。當我想用不同的參數連續運行一個函數幾次時,我應該在Process上使用Pool.map?每個的優點和缺點是什麼?Python中並行編程中的Pool.map和Process有什麼區別?
我想站在多處理模塊下。當我想用不同的參數連續運行一個函數幾次時,我應該在Process上使用Pool.map?每個的優點和缺點是什麼?Python中並行編程中的Pool.map和Process有什麼區別?
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
。
這裏唯一需要注意的是,工作進程是事先確定的,池管理工作分配給工作人員,這是相當不錯的。
如果我有多個參數並運行Python 2.6,我應該使用Process嗎? – idealistikz
@idealistikz:不,我認爲多重爭論不應該是一個問題。確定你是否需要一個固定的工作人員,而不僅僅是一次性的要求。如果它是一個關閉,那麼你可能會浪費工作人員在泳池中無所事事。 :) – pyfunc
如果我要調用的函數需要多個參數,我應該使用Process嗎?如果我在for循環中使用Process,是不是產生了基於迭代次數的不同進程? – idealistikz