Небольшая заметка со ссылками и примерами по профилированию:
- производительность: горячий выстрел или профиль Python/cProfile + визуализатор журнала Ккешгринд (Есть порт для windows , аналог WinCacheGrind )
- использование памяти: лозоходец с веб-интерфейсом
производительность
- сбор статистики с помощью профайлера, варианты:
- пример 1 с использованием быстрого быстрого доступа (который может стать устаревшим):
import hotshot prof = hotshot.Profile("your_project.prof") prof.start() # your code goes here prof.stop() prof.close()
конвертировать формат журнала с помощью утилиты из пакета kcachegrind-конвертеры :hotshot2calltree your_project.prof > your_project.out
- пример 2, использование стандартного профиля/cProfile:
python -m cProfile -o your_project.pyprof your_project.py
преобразовать формат журнала, используя pyprof2calltree :pyprof2calltree -i your_project.pyprof -o your_project.out
(с опцией -k сразу запустит kcachegrind и создавать промежуточный файл не нужно)
- пример 1 с использованием быстрого быстрого доступа (который может стать устаревшим):
- открыть и изучить лог в визуализаторе Ккешгринд
Затем я использовал существующий обработчик для mod_python , но так как последние уже не популярны, то они появились уже давно альтернативные способы подключения и даже модули профилирования (Последний я не использовал).
Память
К сожалению, я пока не знаю, как сделать это так же просто и приятно.Я не хотел рыться в отладчике, я был недоволен Гуппи - он сильный, но сложный - профилировать его, к счастью, приходится не так часто.
Объектный график также не обеспечивает удобную навигацию снаружи отладочные оболочки .
Мой выбор сейчас лозоходец , приложение с интерфейсом CherryPy. С ним все проще, хотя и не так гибко:
- создайте контроллер, по сути, приложение CherryPy 3:
# memdebug.py import cherrypy import dowser def start(port): cherrypy.tree.mount(dowser.Root()) cherrypy.config.update({ 'environment': 'embedded', 'server.socket_port': port }) cherrypy.engine.start()
- подключитесь к вашему приложению:
import memdebug memdebug.start(8080) # your code goes here
- заходим в браузер и смотрим статистику (не обращаем внимания на объекты CherryPy и других библиотек - ищем только нашу)
http://localhost:8080/
Функционал аскетичный, придется немного пощелкать и разобраться, но для поиска проблем вполне достаточно.Нет необходимости изучать и запоминать API отладчика.
Внимание, некоторые операции типа «Показать всё дерево» могут потребовать невероятного объёма памяти для больших приложений.
- Приложение не закроется само по себе.
После изучения прервите Ctrl+Z и убейте
-
Бесплатная Crm + Телефония
19 Oct, 24 -
Google Анонсировала Google Cloud Sql
19 Oct, 24 -
Россия Присматривается К Кимонде?!
19 Oct, 24 -
Не Переходи На Темную Сторону
19 Oct, 24 -
Звуковая Атака
19 Oct, 24