Há um perfil visual para o Python? [fechado]

Eu uso o cProfile agora, mas acho entediante escrever o código pstats só para consultar os dados estatísticos.

Estou à procura de uma ferramenta visual que me mostre o que o meu código Python está a fazer em termos de tempo de CPU e alocação de memória.

Alguns exemplos do mundo Java são visualvm e JProfiler.

    Isto existe? Há alguma IDE que faça isto?
  • dtrace ajudar?

Eu sei sobre o KCachegrind para o Linux, mas preferia algo que pudesse correr no Windows/Mac sem instalar o KDE.

Author: Community, 2010-07-31

12 answers

Um amigo e eu escrevemos um visualizador de perfis Python chamado SnakeViz que corre num navegador web. Se já estiver a usar com sucesso o Russnakerun O SnakeViz pode não adicionar tanto valor, mas o SnakeViz é muito mais fácil de instalar.

Editar: o SnakeViz suporta os Python 2 e 3 e funciona em todos os sistemas principais.

 69
Author: jiffyclub, 2015-09-21 22:47:38

Só estou ciente deRunSnakeRun .

Também houve algumas conversas há algum tempo sobre um profiler Integrado em PyDev (Eclipse), mas não sei se isso alguma vez verá a luz do dia.

Actualização: Infelizmente parece que o RunSnakeRun já não é mantido e não suporta o Python 3.

 40
Author: nikow, 2014-06-20 08:13:54

Eu uso gprof2dot.py. o resultado parece Assim . Eu uso esses comandos:

  python -m cProfile -o profile.dat my_program.py
  gprof2dot.py -f pstats profile.dat | dot -Tpng -o profile.png

Precisas de graphviz e gprof2dot.py instalado. Você pode gostar de um script de concha de conveniência .

 14
Author: maxy, 2014-04-20 07:42:54

Esta pessoa criou um perfil gráfico, descrito aqui . Talvez possas usar isso como ponto de partida para o teu próprio trabalho.

 4
Author: PaulMcG, 2010-08-01 02:04:01

As ferramentas Python para o Visual Studio contêm um perfil gráfico muito bem feito: http://www.youtube.com/watch?v=VCx7rlPyEzE&hd=1

Http://pytools.codeplex.com/

 4
Author: Jake, 2013-05-17 13:39:21

O KCacheGrind inclui uma versão chamada QCacheGrind que executa no Mac OS X e no Windows .

 3
Author: akaihola, 2015-09-22 05:08:07

O grafo de chamadas Python gera imagens muito semelhantes às da resposta de maxy . Ele também mostra tempo total para cada função, por alguma razão não é refletido nos grafos exemplo.

 2
Author: Lev Levitsky, 2017-05-23 11:47:05
Experimenta Snakeviz. Muito fácil de instalar (via pip) e é baseado em navegador.

Https://jiffyclub.github.io/snakeviz/

 2
Author: BangTheBank, 2015-08-12 10:07:38

Escrevi uma ferramenta de visualização baseada no navegador, profile_eye , que opera na saída de gprof2dot .

O Gprof2dot é óptimo em grokking muitas saídas de ferramentas de análise, e faz um grande trabalho na colocação de elementos de gráfico. A renderização final é um gráfico estático, que muitas vezes é muito confuso.

Usando d3.js é possível remover grande parte dessa confusão, através do desbotamento relativo de elementos desfocados, pontas de ferramentas, e um olho de peixe distorção

Para comparação, Ver a visualização de profile_eye do exemplo canónico usado pelo gprof2dot . Para Python em particular, veja um exemplo de saída de cProfile .

 1
Author: Ami Tavory, 2015-05-17 06:07:03

Considere Flame + flamegraph

Pyflame: um Profiler de localização para Python + flamegraph

Https://github.com/uber/pyflame

Você pode seguir em direcção a um processo em execução em python usando o pyflame.

 1
Author: McKelvin, 2016-12-21 10:12:26

Eu useiplop e achei que era muito leve. Dá uma visão rápida do perf.

 0
Author: auny, 2012-08-06 12:17:42