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

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

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

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

4 ответов


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

python -m cProfile script.py

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

или вы можете использовать:

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

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


Salihefendic Амир писал короткие (150 Лк) RequestProfiler, который описан в этом сообщении в блоге:

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


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


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