0
這是我第一次嘗試在Python中使用多處理。我試圖通過行在我的數據框df
上並行化我的功能fun
。回調函數只是將結果追加到一個空列表中,稍後我將對其進行排序。我正確使用python的apply_async嗎?
這是正確的使用方法apply_async
?非常感謝。
import multiprocessing as mp
function_results = []
async_results = []
p = mp.Pool() # by default should use number of processors
for row in df.iterrows():
r = p.apply_async(fun, (row,), callback=function_results.extend)
async_results.append(r)
for r in async_results:
r.wait()
p.close()
p.join()
感謝您的答覆 - 任何特別的原因'地圖'或'imap'比較好? – user3058197
速度可能有所不同,但我沒有測試過。 imap和imap_unordered可以更快地返回它們的第一個結果,並且不需要一次完成在內存中的完整輸出 - 如果您只是要遍歷它,這可能很有趣。 – janbrohl