我正确使用python的apply_async吗?

这是我第一次尝试在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()

回答:

它看起来像使用map或imap_unordered(dependending你是否需要你的结果进行排序或不)会更好地满足您的需求

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()

以上是 我正确使用python的apply_async吗? 的全部内容, 来源链接: utcz.com/qa/257160.html

回到顶部