gpt4 book ai didi

python-3.x - apply_async 结果顺序

转载 作者:行者123 更新时间:2023-12-04 13:46:24 34 4
gpt4 key购买 nike

如果我理解正确,apply_async 会立即返回一个 AsyncResult 对象。如果我按以下方式收集这些对象,并仅在所有工作人员完成后才使用 get(),假设值将按照调用函数的顺序是否安全?

objRes = [None] * len(aRange)
pool = Pool(processes=8)
for x in aRange:
objRes[x] = pool.apply_async(f,(arg1, arg2, arg3,))
pool.close()
pool.join()

res = [None] * len(aRange)
for x in aRange:
res[x] = objRes[x].get()

我开始尝试使用 pool.map() 和 pool.starmap() 代替,但我有两个数组作为参数的一部分,无法弄清楚如何确切地传递它们。

最佳答案

AsyncResult apply_async 返回的对象函数与您安排的元组函数参数相关联。

因此,当您拨打 AsyncResult.get 时你会得到给定工作的结果。

如果你把 AsyncResult列表中的对象与您安排作业的顺序相同,然后您将按该顺序获得结果。
map函数内部的工作方式与您的示例非常相似。如果要将多个参数传递给预定函数,则需要将其与其余参数分组。如果你有很多参数,它可能会非常消耗内存。

arg_list = ((arg1, arg2, arg3) for _ in aRange)

pool.map(f, arg_list)

关于python-3.x - apply_async 结果顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46805057/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com