Eu uso cProfile agora, mas acho tedioso escrever código pstats apenas para consultar os dados estatísticos.
Estou procurando uma ferramenta visual que me mostre o que meu código Python está fazendo em termos de tempo de CPU e alocação de memória.
Alguns exemplos do mundo Java são visualvm e JProfiler .
- Será que algo assim existe?
- Existe um IDE que faz isso?
- O dtrace ajudaria?
Eu sei sobre o KCachegrind para Linux, mas prefiro algo que possa executar no Windows / Mac sem instalar o KDE.
python
user-interface
profiling
profiler
Frederik
fonte
fonte
Respostas:
Um amigo e eu escrevemos um visualizador de perfil Python chamado SnakeViz que é executado em um navegador da web. Se você já estiver usando o RunSnakeRun, o SnakeViz pode não agregar muito valor, mas o SnakeViz é muito mais fácil de instalar.
Edit: SnakeViz suporta Python 2 e 3 e funciona em todos os principais sistemas.
fonte
Estou ciente apenas de RunSnakeRun .
Também se falou há algum tempo sobre um profiler integrado em PyDev (Eclipse), mas não sei se isso verá a luz do dia.
Atualização: Infelizmente, parece que o RunSnakeRun não é mais mantido e não oferece suporte ao Python 3.
fonte
Eu uso gprof2dot.py. O resultado é assim . Eu uso esses comandos:
Você precisa graphviz e gprof2dot.py instalado. Você pode gostar de um script de shell de conveniência .
fonte
O Spyder também fornece uma interface gráfica muito boa para cProfile:
fonte
Python Tools for Visual Studio contém um criador de perfil gráfico muito bem feito: http://www.youtube.com/watch?v=VCx7rlPyEzE&hd=1
http://pytools.codeplex.com/
fonte
Essa pessoa criou um perfil gráfico, descrito aqui . Talvez você possa usar isso como um ponto de partida para seu próprio trabalho.
fonte
KCacheGrind inclui uma versão chamada QCacheGrind que pode ser executada no Mac OS X e no Windows .
fonte
apt-get install kcachegrind
instalar apenas 3 bibliotecas relacionadas ao KDE.apt install kcachegrind
deseja instalar 102 pacotes, incluindo ~ 40 bibliotecas KDE.ubuntu:xenial
pode ser três vezes mais, mas é para um ambiente de desenvolvimento e quase não vejo isso como um problema. E na verdadeapt-cache depends --recurse --no-recommends --no-suggests --no-conflicts --no-breaks --no-replaces --no-enhances --no-pre-depends kcachegrind | grep kde | grep Depends | sort -u | wc -l
diz apenas 13.Experimente Snakeviz. Muito fácil de instalar (via pip) e é baseado em navegador.
https://jiffyclub.github.io/snakeviz/
fonte
O Python Call Graph gera imagens muito semelhantes às da resposta de maxy . Ele também mostra o tempo total para cada função, por algum motivo não é refletido nos gráficos de exemplo.
fonte
Eu escrevi uma ferramenta de visualização baseada em navegador, profile_eye , que opera na saída de gprof2dot .
O gprof2dot é ótimo em agrupar muitas saídas de ferramentas de perfil e faz um ótimo trabalho na colocação de elementos gráficos. A renderização final é um gráfico estático, que geralmente é muito confuso.
Usando d3.js , é possível remover muito dessa desordem, por meio do desbotamento relativo de elementos desfocados, dicas de ferramentas e uma distorção fisheye .
Para comparação, consulte a visualização de profile_eye do exemplo canônico usado por gprof2dot . Para Python em particular, veja um exemplo de saída cProfile .
fonte
Considere pyflame + flamegraph
Pyflame: um Profiler Ptracing para Python + flamegraph
https://github.com/uber/pyflame
Você pode rastrear um processo python em execução usando pyflame.
fonte
Eu usei o plop e o achei muito leve. Dá uma visão rápida do desempenho.
fonte