我有幾個有關以下代碼片段功能的問題。關於用於python並行的python Pool.map函數的澄清
def f(x):
return x*x
if __name__ == '__main__':
pool = Pool(processes=10) # start 10 worker processes
result = pool.apply_async(f, [10]) # evaluate "f(10)" asynchronously
print result.get(timeout=1)
print pool.map(f, range(10)) # prints "[0, 1, 4,..., 81]"
在線路
pool = Pool(processes=10)
,它甚至有所作爲,如果我在4處理器架構(四核)運行,並且由於僅多達4個進程可以執行實例化超過4個的工作進程在任何時間點?在
pool.map(f,range(10))
函數中,如果我實例化10個工作進程,並且可能有50個映射器,python在完成執行時負責分配映射到進程,或者我應該計算出有多少映射器被創建並實例化行pool = Pool(processes=number_of_mappers)
?許多進程。
這是我第一次嘗試對任何事情進行並行處理,而且我感到非常困惑。所以任何幫助將不勝感激。
提前致謝!
在您做出了設計使其在單臺計算機上高效運行的優秀設計選擇後,您意識到某些問題對於單臺計算機來說太大了。添加進程使您能夠針對特定問題拋出硬件。 – Back2Basics