Python Pebble ProcessPool как установить max_tasks - PullRequest
0 голосов
/ 30 января 2019

Пулы процессов Pebble принимают параметры для max_workers и max_tasks.

https://pythonhosted.org/Pebble/#pools

Описание max_tasks немного неясно:

"Если max_tasks больше числачем ноль, каждый работник будет перезапущен после выполнения равного количества задач. "

Мой вопрос:

  • Что если он не больше нуля?Как он себя ведет тогда?

  • Что значит перезагрузить работника?Допустим, max_tasks равно 5. Тогда каждый процесс выполнит 5 итераций, затем будет уничтожен, а новый процесс перезапущен?Какая польза от этого?

  • Я знаю, что другие библиотеки позволяют настраивать карты пула в зависимости от того, ожидается ли, что для выполнения каждой задачи потребуется одинаковое время или нет.Это уместно здесь?

  • В целом, какие рекомендации существуют для установки max_tasks?

Я запускаю функцию, которая должна бытьзапустить на каждом элементе списка длиной + = 160 000. Это полностью распараллеливается, и мой сервер имеет 8 ядер.Каждый вызов функции занимает примерно одно и то же время для завершения, самое большее в 3 раза дольше, чем среднее время.

Спасибо.

1 Ответ

0 голосов
/ 23 марта 2019

Параметр max_task аналогичен maxtaskperchild in multiprocessing.Pool.Python 2 связанная документация объясняет назначение такого параметра.

Рабочие процессы в пуле обычно работают в течение всей продолжительности рабочей очереди пула.В других системах (таких как Apache, mod_wsgi и т. Д.) Часто встречается тенденция освобождения ресурсов, хранящихся у работников, - разрешать работнику в пуле выполнять только определенный объем работы перед выходом, очисткой и порождением нового процесса.заменить старый.Аргумент maxtasksperchild для пула предоставляет эту возможность конечному пользователю.

Другими словами, вы используете max_task, если хотите ограничить объем ресурсов, которые могут выдержать процессы.Это полезно, если вы имеете дело с библиотеками, которые, например, имеют утечку памяти или файловые дескрипторы.Другим вариантом использования является ограничение использования памяти фрагментацией памяти в процессе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...