繁体   English   中英

如何获得multiprocessing.Pool.apply_async的结果

[英]How to get the result of multiprocessing.Pool.apply_async

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

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

解决方案非常简单:

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。

无论如何,您需要检查线程是否已完成。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM