我正在使用 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)
我希望二次测试获取一个值供我在主测试中使用,并将其作为参数发送。
当然。您从 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