Асинхронное выполнение нескольких вариантов функции в Python

#python #function #asynchronous #multiprocessing #user-defined-functions

Вопрос:

Как я могу запустить пул из нескольких процессов, где я обрабатываю run1-3 асинхронно, с помощью инструмента множественной обработки на python.

 def Numbers(number):
   value = number * 10 /33
   return value

run1 = Numbers(10)
run2 = Numbers(2)
run3 = Numbers(55)
 

Комментарии:

1. Сомнительно, что из-за накладных расходов на создание процессов и передачу параметров и результатов из одного адресного пространства в другое вы увидите повышение производительности с помощью такой тривиальной функции, как Numbers . На самом деле, я бы ожидал, что производительность снизится.

2. Небольшая придирка, имена функций должны быть в нижнем регистре (точнее, snake_case). Только имена классов должны использовать camelCase. Кто-то, читающий ваш код, разумно предположил Numbers бы, что это ссылка на класс, и мог бы сделать некоторые неправильные предположения.

Ответ №1:

простое использование многопроцессорной обработки.Бассейн()

 import multiprocessing                                # import package
with multiprocessing.Pool(3) as pool:               # 3 processes
    run1, run2, run3 = pool.map(Numbers, [10,2,55]) # map input amp; output
 

Комментарии:

1. обязательно всегда используйте if __name__ == "__main__": с многопроцессорной обработкой. дочерние процессы должны импортировать основной файл, и вы не можете создавать внуков во время импорта (это ошибка во время выполнения).