Есть ли визуальный профилировщик для Python?

Теперь я использую cProfile, но мне очень сложно написать код pstats, чтобы запросить данные статистики.

Я ищу визуальный инструмент, который показывает мне, что мой код Python делает с точки зрения времени процессора и памяти.

Некоторые примеры из мира Java: visualvm и JProfiler.

  • Есть ли что-то подобное?
  • Есть ли IDE, который делает это?
  • Помогла ли dtrace?

Я знаю о KCachegrind для Linux, но я бы предпочел что-то, что я могу запустить на Windows/Mac без установки KDE.

4b9b3361

Друг и я написали программу просмотра профиля Python под названием SnakeViz, которая запускается в веб-браузере. Если вы уже успешно используете RunSnakeRun, SnakeViz может не добавить такого большого значения, но SnakeViz намного проще установить.

Изменить: SnakeViz поддерживает Python 2 и 3 и работает во всех основных системах.

65
ответ дан 24 сент. '12 в 3:07
источник

Я знаю только RunSnakeRun.

Некоторое время назад был разговор о интегрированном профилировщике в PyDev (Eclipse), но я не знаю, увидит ли это когда-нибудь свет дня.

Обновление: К сожалению, кажется, что RunSnakeRun больше не поддерживается, и он не поддерживает Python 3.

39
ответ дан 31 июля '10 в 20:34
источник

Я использую 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.

13
ответ дан 13 мая '12 в 18:03
источник

Этот человек создал графический профиль, описанный здесь. Возможно, вы могли бы использовать это как отправную точку для своей собственной работы.

4
ответ дан 01 авг. '10 в 5:04
источник

Я использовал plop и нашел, что он очень легкий. Дает краткое представление о перфомансе.

0
ответ дан 06 авг. '12 в 15:17
источник

Я написал инструмент визуализации на основе браузера, profile_eye, который работает с выходом gprof2dot.

gprof2dot отлично справляется с большим количеством профилей для профилирования и отлично справляется с размещением графического элемента. Окончательный рендеринг - статическая графика, которая часто очень захламлена.

Используя d3.js, можно удалить большую часть этого беспорядка, путем относительного затухания несфокусированных элементов, всплывающих подсказок и искажение рыбий глаз.

Для сравнения см. profile_eye visualization канонического примера используемого gprof2dot. В частности, для Python см. пример вывода cProfile.

0
ответ дан 17 мая '15 в 9:07
источник