簡體   English   中英

我是否正確使用python的apply_async?

[英]Am I using python's apply_async correctly?

這是我第一次嘗試在Python中使用多重處理。 我正在嘗試在數據框df按行並行處理函數fun 回調函數只是將結果附加到一個空列表中,稍后我將對其進行排序。

這是使用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()

看起來使用mapimap_unordered (取決於您是否需要對結果進行排序)會更適合您的需求

import multiprocessing as mp

#prepare stuff

if __name__=="__main__":

    p = mp.Pool()

    function_results = list(p.imap_unorderd(fun,df.iterrows())) #unordered
    #function_results = p.map(fun,df.iterrows()) #ordered

    p.close()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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