Измерение производительности в Python - PullRequest
12 голосов
/ 21 июня 2011

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

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

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

Ответы [ 4 ]

7 голосов
/ 21 июня 2011

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

python -m cProfile script.py

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

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

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

для профилирования его с foo точки входа.

4 голосов
/ 21 июня 2011

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

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

0 голосов
/ 11 октября 2015

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

0 голосов
/ 21 июня 2011

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

...