Получить возвращаемое значение для многопроцессорных функций в python

у меня есть две функции работают параллельно и каждая из них возвращает значение. Мне нужно дождаться завершения обеих функций, а затем обработать их возврат. Как я могу достичь этого в python. Предположим

def fun1():
   #do some calculation#
   return val1

def fun2():
   #do some calculation#
   return val2

Я хочу fun1 и fun2 работать параллельно, а затем нужно рассчитать

valsum = val1+val2

1 ответов


используя concurrent.futures:

from concurrent.futures import ProcessPoolExecutor as Executor
#from concurrent.futures import ThreadPoolExecutor as Executor  # to use threads
with Executor() as executor:
    future1 = executor.submit(fun1, arg1, arg2, ...)
    future2 = executor.submit(fun2, arg1, arg2, ...)
    val1, val2 = future1.result(), future2.result()
    valsum = val1 + val2

concurrent.futures.Executor.submit планирует выполнение функции и возвращает concurrent.futures.Future