Ahora uso cProfile, pero me resulta tedioso escribir código pstats solo para consultar los datos estadísticos.
Estoy buscando una herramienta visual que me muestre lo que hace mi código Python en términos de tiempo de CPU y asignación de memoria.
Algunos ejemplos del mundo Java son visualvm y JProfiler .
- Existe algo como esto?
- ¿Existe un IDE que haga esto?
- ¿ Ayudaría dtrace ?
Conozco KCachegrind para Linux, pero preferiría algo que pueda ejecutar en Windows / Mac sin instalar KDE.
python
user-interface
profiling
profiler
Frederik
fuente
fuente
Respuestas:
Un amigo y yo hemos escrito un visor de perfiles de Python llamado SnakeViz que se ejecuta en un navegador web. Si ya está utilizando RunSnakeRun, es posible que SnakeViz no agregue tanto valor, pero SnakeViz es mucho más fácil de instalar.
Editar: SnakeViz es compatible con Python 2 y 3 y funciona en todos los sistemas principales.
fuente
Solo conozco RunSnakeRun .
También se habló hace algún tiempo sobre un generador de perfiles integrado en PyDev (Eclipse), pero no sé si eso alguna vez verá la luz del día.
Actualización: Desafortunadamente, parece que RunSnakeRun ya no se mantiene y no es compatible con Python 3.
fuente
Yo uso gprof2dot.py. El resultado se ve así . Yo uso esos comandos:
Necesita graphviz y gprof2dot.py instalados. Puede que le guste un script de shell de conveniencia .
fuente
Spyder también proporciona una interfaz gráfica de usuario bastante agradable para cProfile:
fuente
Python Tools para Visual Studio contiene un generador de perfiles gráfico muy bien hecho: http://www.youtube.com/watch?v=VCx7rlPyEzE&hd=1
http://pytools.codeplex.com/
fuente
Esta persona creó un perfil gráfico, que se describe aquí . Tal vez puedas usar eso como punto de partida para tu propio trabajo.
fuente
KCacheGrind incluye una versión llamada QCacheGrind que se ejecuta en Mac OS X y en Windows .
fuente
apt-get install kcachegrind
instalar solo 3 bibliotecas relacionadas con KDE.apt install kcachegrind
quiere instalar 102 paquetes, incluidas ~ 40 bibliotecas de KDE.ubuntu:xenial
, puede ser tres veces más, pero es para un entorno de desarrollo y apenas lo veo como un problema. Y en realidadapt-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
dice solo 13.Prueba Snakeviz. Muy fácil de instalar (a través de pip) y está basado en navegador.
https://jiffyclub.github.io/snakeviz/
fuente
Python Call Graph genera imágenes muy similares a las de la respuesta de maxy . También muestra el tiempo total para cada función, por alguna razón no se refleja en los gráficos de ejemplo.
fuente
Escribí una herramienta de visualización basada en navegador, profile_eye , que opera en la salida de gprof2dot .
gprof2dot es excelente para asimilar muchas salidas de herramientas de creación de perfiles y hace un gran trabajo en la ubicación de elementos gráficos. La representación final es un gráfico estático, que a menudo está muy desordenado.
Usando d3.js es posible eliminar gran parte de ese desorden, a través del desvanecimiento relativo de elementos desenfocados, información sobre herramientas y una distorsión de ojo de pez .
Para comparar, vea la visualización de profile_eye del ejemplo canónico usado por gprof2dot . Para Python en particular, vea un ejemplo de salida de cProfile .
fuente
Considere pyflame + flamegraph
Pyflame: un perfilador de Ptracing para Python + flamegraph
https://github.com/uber/pyflame
Puede rastrear hacia un proceso de Python en ejecución usando pyflame.
fuente
He usado plop y lo encontré muy ligero. Da una idea rápida del perf.
fuente