如何获得多处理的结果.Pool.apply_async



我想得到Pool.apply_async在Python中运行的函数的结果。

如何将结果分配给父流程中的变量?我尝试使用回调,但似乎很复杂。

解决方案非常简单:

import multiprocessing
def func():
    return 2**3**4
p = multiprocessing.Pool()
result = p.apply_async(func).get()
print(result)

由于Pool.apply_async()返回一个AsyncResult,你可以简单地从AsyncResult.get()方法得到结果。

希望这有帮助!

一个简单的方法是有一个这样的帮助程序类:

class Result():
    def __init__(self):
        self.val = None
    def update_result(self, val):
        self.val = val
result = Result()
def f(x):
    return x*x
pool.apply_async(f, (10,), callback=result.update_result)

当线程运行并计算结果时,它将调用您的回调,这将更新 result.val。

在任何情况下,您都需要检查线程是否已完成。

相关内容

  • 没有找到相关文章

最新更新