簡體   English   中英

並行化受CPU約束的Python函數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM