Многопроцессорная python функция, которая вызывает функцию, возвращающую значение - PullRequest
1 голос
/ 18 июня 2020

Я пытаюсь распараллелить свой код, но не знаю, как это сделать правильно. Мой код выглядит примерно так:

import my_module

def task(i):
    result = my_module.func(i) #This takes about 30 secs
    return result

if __name__ == "__main__":
    from concurrent.futures import ProcessPoolExecutor
    executor = ProcessPoolExecutor()
    results = executor.map(task, range(500))
    print(results)

Но основная программа не ждет результата my_module.func(). Возврат чего-то вроде: объект генератора _chain_from_iterable_of_lists в 0x .....

Как я могу заставить процесс ждать результата func()

1 Ответ

0 голосов
/ 18 июня 2020

Вы не можете, и вот почему:

Вся идея многопроцессорности / потоковой передачи состоит в том, что вместо ожидания в операторе возврата вы можете выполнить весь необходимый код в указанном и с использованием потоковой передачи делайте все это несколько раз в секунду. Однако, если вам абсолютно необходимо использовать потоки, объедините все, для чего вы используете возвращаемые данные, в самой функции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...