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

Я пытался создать функцию, которая может запускать несколько процессов асинхронно и отправит ответ. посколькуmultiprocessing.Process() не возвращайте ответ, я думал о создании функции как:

from multiprocessing import Process

def async_call(func_list):
    """
    Runs the list of function asynchronously.

    :param func_list: Expects list of lists to be of format
        [[func1, args1, kwargs1], [func2, args2, kwargs2], ...]
    :return: List of output of the functions
        [output1, output2, ...]
    """
    response_list = []
    def worker(function, f_args, f_kwargs, response_list):
        """
        Runs the function and appends the output to list
        """
        response = function(*f_args, **f_kwargs)
        response_list.append(response)

    processes = [Process(target=worker, args=(func, args, kwargs, response_list)) \
                    for func, args, kwargs in func_list]

    for process in processes:
        process.start()
    for process in processes:
        process.join()
    return response_list

В рамках этой функции я называюworker асинхронно, который принимает дополнительный параметр какlist, Поскольку списки передаются как ссылки, я подумал, что могу добавить ответ фактической функции в список. А такжеasync_call вернет мне ответ всей функции.

Но это не так, как я ожидал. Значение добавляется кlist в пределахworker(), но вне рабочегоresponse_list список остается пустым.

Есть идеи, что я делаю не так? И есть ли альтернатива для достижения того, что я делаю?

Ответы на вопрос(2)

Ваш ответ на вопрос