THN*_*THN 5 python parallel-processing multiprocessing
我想在Python中获取Pool.apply_async运行的函数的结果.
如何将结果分配给父进程中的变量?我试图使用回调,但似乎很复杂.
lin*_*usg 14
解决方案非常简单:
import multiprocessing
def func():
return 2**3**4
p = multiprocessing.Pool()
result = p.apply_async(func).get()
print(result)
Run Code Online (Sandbox Code Playgroud)
由于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)
Run Code Online (Sandbox Code Playgroud)
当线程运行并计算结果时,它将调用您的回调函数,该回调函数将更新 result.val。
无论如何,您需要检查线程是否已完成。