Потоки ускоряют ввод-вывод, пока мелкая работа не упирается в процессор
Вы увеличиваете число рабочих потоков
Перейти на
В разборе ProcessThreadPoolExecutor остались возврат результатов через собственные объекты
Вы увеличиваете число рабочих потоков
ThreadPoolExecutor, настраиваете пул соединений, а пропускная способность перестаёт расти. Даже короткий вычислительный участок повторяется в каждом задании и постепенно отбирает выигрыш от новых потоков.Перейти на
ProcessPoolExecutor можно, но тогда вход приходится разбивать на пачки, менять код и платить памятью за процессы. Автор собирает гибрид: несколько процессов, внутри каждого пул потоков, с привычным интерфейсом исполнителя задач.В разборе ProcessThreadPoolExecutor остались возврат результатов через собственные объекты
Future, гибель рабочего процесса и влияние свободнопоточного Python на всю конструкцию.death and gravity
ProcessThreadPoolExecutor: when I/O becomes CPU-bound
...in which we build a hybrid concurrent.futures executor that runs I/O bound tasks on all available CPUs, thus evading the limitations imposed by the dreaded global interpreter lock on the humble ThreadPoolExecutor.