Как установить наиболее эффективные параметры для ThreadPoolExecutor и ProcessPoolExecutor? - PullRequest
0 голосов
/ 08 мая 2018

Если я правильно понимаю, для ProcessPool вы используете его, когда у вас ограниченный процессор. Так что, если я четырехъядерный, значит ли это, что наиболее эффективным max_workers является 4? И как мне узнать, какой из них наиболее эффективен для ThreadPool, потому что, если я правильно понимаю, его следует использовать, когда вы связаны с вводом / выводом?

Это использует встроенные функции из Python concurrent.futures.

1 Ответ

0 голосов
/ 09 мая 2018

Комментарий tdelaney!

Вы должны измерить его.


Я обычно использую подход, подобный описанному в общих чертах, чтобы получить общее представление о программе. Является ли основная часть вашей программы синтаксическим анализом JSON или HTML? чем это связано с процессором. Это делает DB / HTTP / сетевых запросов? IO связанный

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


Существует множество отличных инструментов для тестирования производительности:

  • ab
  • vegeta
  • siege
  • очереди / посредники сообщений часто предоставляют http-интерфейсы, поэтому резервная копия может быть загружена с помощью одного из вышеперечисленных инструментов или применена с постоянной пропускной способностью
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...