En mi programa python he usado muchos módulos y estoy tratando de contar las funciones llamadas y las cadenas de llamadas involucradas. ¿Hay una herramienta/módulo en Python que me proporcione estas estadísticas?Profilers de Call-graph en Python
Respuesta
He utilizado este. No funcionó para mis propósitos ya que mi aplicación tiene muchos hilos ejecutándose a la vez y terminé con 12000 enlaces y graphviz no pudo compilarlo. Pero funcionó cuando lo ejecuté en un solo hilo.
pydoc perfil -k
le dará una lista de lo que hay en el sistema. He usado profile y cProfile.
Es tan fácil como:
if __name__ == '__main__':
if PROFILING:
import cProfile
cProfile.run("main()")
else:
main()
i diid intente eso antes ... y obtengo un error, es por eso que estaba buscando una herramienta/módulo que me facilitará – Rahul
¿Cuál es el texto exacto de su error? –
Traza (última llamada más reciente): Archivo "test.py", línea 12, en
Seis años más tarde, tengo la misma pregunta, algunos people recommend de usar KCachegrind para la visualización de cadenas de llamadas. Si bien es una opción válida para los usuarios de Linux, es extremadamente difícil de instalar en Mac OSX y probablemente también en Windows.
Finalmente, estoy usando gprof2dot en su lugar. Con sólo unos pocos comandos que tendrá su gráfico de llamadas expresiva:
python -m cProfile -o output.pstats path/to/your/script arg1 arg2
gprof2dot.py -f pstats output.pstats | dot -Tpng -o output.png
herramienta fácil, resultados rápidos: comprobar que funciona: https://github.com/jrfonseca/gprof2dot
Editar:
Ahora se enteraron puede obtener KCachegrind también a través de brew: brew install qcachekrind
- 1. F # profilers interactivos y de rendimiento
- 2. Por qué los profilers necesitan privilegios administrativos (en Windows)
- 3. Necesita saber cómo usar los profilers/cuál usar
- 4. de MATLAB en Python
- 5. de bucles en Python
- 6. Asociatividad de "en" en Python?
- 7. Eliminación de clases de Python 3 en Python 2
- 8. Incrustar el intérprete de python en una aplicación de Python
- 9. en Python
- 10. en Python
- 11. en Python
- 12. en Python
- 13. código python para comparar imágenes en Python
- 14. Python - ¿Cómo cortar una cuerda en Python?
- 15. Nuevo en Python ... Python 3 y Matplotlib
- 16. El uso de varias conchas de Python en Emacs 'python-mode' con Python o IPython
- 17. ¿Hay buenos ejemplos de python-memcache (memcached) utilizados en Python?
- 18. Usar el módulo de subproceso Python 2.6 en Python 2.5
- 19. Python: ¿Cómo puedo ejecutar las funciones de Python en paralelo?
- 20. Las descripciones de Python no funcionan en Python 2.7
- 21. Subconjunto de datos en Python
- 22. Cadena de diccionario en Python
- 23. Herencia de clase en Python
- 24. Solicitud de HTTPS en Python
- 25. Descompresión de archivos en python
- 26. Horario de verano en Python
- 27. Subproceso de Python en paralelo
- 28. Biblioteca de XQuery en Python
- 29. error de memoria en python
- 30. Diagramas de Sankey en Python
¿Realmente está preguntando "¿Cómo puedo encontrar los cuellos de botella en mi código python para que pueda hacerlo funcionar f aster"? –
bien en algunos niveles sí. Es solo que si la cadena de llamadas de funciones para un evento en particular es bastante larga, entonces preferiría sustituir con un método alternativo eficiente si pudiera. – Rahul