Для обработки данных в несколько процессов существует
multiprocessing с замечательной функцией map (не путать с обычным map).
from multiprocessing import *
def func(e):
return e ** 2
p = Pool(4) # количество процессов
end = p.map(func, [2, 4, 6, 8, 16])
print(end)
>> [4, 16, 36, 64, 256]
Данный код создает 4 процесса, каждый из которых делает следующее:
- Берет i-ный элемент из начального списка (для первого процесса: 1, 5, 9; для второго: 2, 6, 10; для третьего: 3, 7, 11 и т.д.)
- Передает его в функцию
func
- Получает результат из
func
- Вставляет в новый список на i-ное место этот элемент
Прошу заметить, что хоть разные элементы списка обрабатываются в разное время (это легко понять, добавив в функцию
print(e)
), но в конечном списке они соблюдают начальную последовательность.