#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__":
с многопроцессорной обработкой. дочерние процессы должны импортировать основной файл, и вы не можете создавать внуков во время импорта (это ошибка во время выполнения).