[英]Parallelizing a CPU-bound Python function
我有一個受CPU約束的Python函數,在標准內核上運行大約需要15秒。 我需要運行此功能數萬次。 函數輸入的數據集大小約為10kB,因此與運行時相比,數據傳輸時間應忽略不計。 這些功能不需要相互通信。 返回值是一個小數組。
我完全不需要同步這些功能。 我所關心的是,當一個核心完成時,它被委派了一份新工作。
什么是開始對此問題進行並行化處理的良好框架? 我希望能夠在我自己的計算機以及Amazon單元上運行它。
Python的多處理模塊會成功嗎? 除此之外,我會更好嗎?
如果不需要通信-最簡單的方法是Pool.map。 它類似於map函數,但是迭代在子進程之一中處理。
import multiprocessing
pool = multiprocessing.Pool(processes=4)
def fu(chunk):
#your code here
return result
def produce_data(data):
while data:
#you need to split data
yield chunk
result = pool.map(fu,produce_data(data))
# result will be ordered list of results for each chunk
幾乎沒有幾種方法可以通過多處理來處理數據。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.