Есть ли визуальный профилировщик для Python?
Теперь я использую cProfile, но мне очень сложно написать код pstats, чтобы запросить данные статистики.
Я ищу визуальный инструмент, который показывает мне, что мой код Python делает с точки зрения времени процессора и памяти.
Некоторые примеры из мира Java: visualvm и JProfiler.
- Есть ли что-то подобное?
- Есть ли IDE, который делает это?
- Помогла ли dtrace?
Я знаю о KCachegrind для Linux, но я бы предпочел что-то, что я могу запустить на Windows/Mac без установки KDE.
Ответы
Ответ 1
Друг и я написали программу просмотра профиля Python под названием SnakeViz, которая запускается в веб-браузере. Если вы уже успешно используете RunSnakeRun, SnakeViz может не добавить такого большого значения, но SnakeViz намного проще установить.
Изменить: SnakeViz поддерживает Python 2 и 3 и работает во всех основных системах.
Ответ 2
Я знаю только RunSnakeRun.
Некоторое время назад был разговор о интегрированном профилировщике в PyDev (Eclipse), но я не знаю, увидит ли это когда-нибудь свет дня.
Обновление: К сожалению, кажется, что RunSnakeRun больше не поддерживается, и он не поддерживает Python 3.
Ответ 3
Я использую gprof2dot.py. Результат выглядит как это. Я использую следующие команды:
python -m cProfile -o profile.dat my_program.py
gprof2dot.py -f pstats profile.dat | dot -Tpng -o profile.png
Вам нужно graphviz и gprof2dot.py установлен. Вам может понравиться удобная оболочка script.
Ответ 4
Spyder также предоставляет довольно приятный gui для cProfile:
![enter image description here]()
Ответ 5
Этот человек создал графический профиль, описанный здесь. Возможно, вы могли бы использовать это как отправную точку для своей собственной работы.
Ответ 6
Python Tools для Visual Studio содержит очень хороший графический профайлер: http://www.youtube.com/watch?v=VCx7rlPyEzE&hd=1
http://pytools.codeplex.com/
Ответ 7
KCacheGrind включает версию QCacheGrind, которая запускает в Mac OS X и в Windows.
Ответ 8
Python Call Graph генерирует фотографии, очень похожие на те, что указаны в максимальном ответе. Он также показывает общее время для каждой функции, по какой-то причине это не отражено в примерах графиков.
Ответ 9
Попробуйте Snakeviz. Очень легко установить (через pip) и на основе браузера.
https://jiffyclub.github.io/snakeviz/
Ответ 10
Рассмотрим pyflame + flamegraph
Pyflame: Ptracing Profiler для Python + плагиат
https://github.com/uber/pyflame
Вы можете отслеживать выполняемый процесс python с помощью pyflame.
Ответ 11
Я использовал plop и нашел, что он очень легкий. Дает краткое представление о перфомансе.
Ответ 12
Я написал инструмент визуализации на основе браузера, profile_eye, который работает с выходом gprof2dot.
gprof2dot отлично справляется с большим количеством профилей для профилирования и отлично справляется с размещением графического элемента. Окончательный рендеринг - статическая графика, которая часто очень захламлена.
Используя d3.js, можно удалить большую часть этого беспорядка, путем относительного затухания несфокусированных элементов, всплывающих подсказок и искажение рыбий глаз.
Для сравнения см. profile_eye visualization канонического примера используемого gprof2dot. В частности, для Python см. пример вывода cProfile.