Измерение производительности в Python

Я пишу веб-приложение на Python, я не решил, хочу ли я использовать Flask, web.py или еще что-нибудь еще, и хочу, чтобы у меня был профиль в реальном приложении.

Кажется, что очень мало информации о том, как вы идете о внедрении инструментария для измерения производительности, а не во многих случаях печатать datetime.now() повсюду.

Каков наилучший способ использования приложения Python для обеспечения хороших измерений. Наверное, я ищу что-то похожее на команды mcc-mini-profiler для команд Stackoverflow.

Ответ 1

Вы можете просто запустить инструмент cProfile, который поставляется с Python:

python -m cProfile script.py

Конечно, вам нужно будет создать файл script.py, который будет выполнять части кода, который вы хотите протестировать. Если у вас были некоторые модульные тесты, вы также можете использовать их.

Или вы используете:

import cProfile 
cProfile.run('foo()')

чтобы профилировать его с точки входа foo.

Ответ 2

Амир Салихефендик написал короткий (150 LOC) RequestProfiler, который описан в этом сообщении в блоге:

Я не пробовал, но поскольку это связующее ПО WSGI, оно должно быть несколько подключаемым.

Ответ 3

Вы можете просто использовать инструмент для повышения производительности веб-приложений общего назначения, например httpperf. Это работает с использованием внешнего клиента и работает с любой средой, поскольку работает со стандартным интерфейсом (HTTP). Поэтому он проверяет полную производительность стека.

Ответ 4

Используйте Новая реликвия Бесплатная система мониторинга. Вы просто устанавливаете агент на сервере и указываете на свой флажок init.py файл. После запуска приложения с надлежащей настройкой агента вы начнете видеть показатели приложений в онлайн-панели New Relic под названием APM. По умолчанию он покажет вам графики пропускной способности вашего приложения (QPS/RPM), время отклика приложения, верхние транзакции, частоту ошибок, трассировку стека ошибок, если таковые имеются (например, для 500 ошибок), вызовы внешних служб и т.д. Кроме того, вы можете отслеживать ваша статистика системы тоже.