如何在Python中使用threadpoolexecutor运行两个测试并将其中一个的结果作为参数发送给另一个测试

问题描述 投票:0回答:1

我正在使用 ThreadPoolExecutor 在 python 中同时运行两个测试,对于某些测试,但是我有一个问题,那就是假设有一个主要测试和一个辅助测试,两者都将从头开始执行,但是辅助测试测试将首先完成,我返回结果,稍后将其用作主测试中的参数,因为当我需要它时,我已经完成了辅助测试,但我不知道如何应用它。

这是我正在尝试做的一个小例子。

from concurrent.futures import ThreadPoolExecutor

def Suma (valor1,valor2)
    resultado_suma = valor1 + valor2
    print(f"El resultado de la suma es: {resultado_suma}")
    return resultado_suma

def Multiplicacion (resultado_suma)
    resultado_multiplicacion = resultado_suma * 2
    print(f"El resultado de la multiplicacion es: {resultado_multiplicacion}")

with ThreadPoolExecutor(max_workers=2) as executor:
    resultado_fn_suma = executor.submit(Suma,5,5)
    executor.submit(Multiplicacion,resultado_fn_suma)

我希望二次测试获取一个值供我在主测试中使用,并将其作为参数发送。

python automated-tests threadpoolexecutor
1个回答
0
投票

当然。您从 Future

 得到 
executor.submit()
;在 future 上调用 
.result()
等待 future 完成并返回值(或者如果 future 失败则引发异常)。

from concurrent.futures import ThreadPoolExecutor, Future


def Suma(valor1: int, valor2: int):
    resultado_suma = valor1 + valor2
    print(f"El resultado de la suma es: {resultado_suma}")
    return resultado_suma


def Multiplicacion(resultado_suma: Future):
    resultado_multiplicacion = resultado_suma.result() * 2
    print(f"El resultado de la multiplicacion es: {resultado_multiplicacion}")
    return resultado_multiplicacion + 15


with ThreadPoolExecutor(max_workers=2) as executor:
    sum_future = executor.submit(Suma, 5, 5)
    mult_future = executor.submit(Multiplicacion, sum_future)
    print("Final result:", mult_future.result())

打印出来

El resultado de la suma es: 10
El resultado de la multiplicacion es: 20
Final result: 35
© www.soinside.com 2019 - 2024. All rights reserved.