Python Многопроцессорность: Как правильно настроить количество max_workers? - PullRequest
0 голосов
/ 18 июня 2020

Фон: у меня огромный DataFrame с 40 миллионами строк. Мне нужно запустить некоторые функции для некоторых столбцов. Циклы занимали слишком много времени, поэтому я решил go с многопроцессорной обработкой. ЦП: 8 ядер 16 потоков ОЗУ: 128 ГБ

Вопрос: на сколько фрагментов следует разбить данные? И сколько рабочих нужно для этого набора данных?

ps Я обнаружил, что когда я устанавливаю max_workers = 15, все потоки работают на 100%. Но если я изменю max_workers на 40, они упадут до 40%.

Спасибо!

1 Ответ

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

Есть три типа параллельных вычислений. Это вычисления с интенсивным использованием io, интенсивным процессором и интенсивным использованием io-cpu. Если ваш поток выполняется в задаче с интенсивным использованием ЦП, то вы можете увеличить количество рабочих, если хотите повысить производительность. Но если он работает с интенсивным использованием io, их увеличение не повлияет.

Кажется, вы работаете над задачей с интенсивным использованием io-cpu. Итак, если вы увеличите количество рабочих, вы можете получить хороший результат до тех пор, пока не будет конкуренции за использование ресурса io (жесткого диска), поэтому на локальной машине. это не лучший выбор для увеличения числа рабочих.

Вы можете использовать Had oop на GPS или AWS для этой работы.

...