Herramienta de línea de comandos y web para visualizar y analizar datos de perfiles en formato profile.proto.
joerick/pyinstrument
Un profiler de pila de llamadas para Python que muestra en qué partes de tu código se va el tiempo, con formatos de salida para consola, HTML y otros.
- Estrellas
- 8,026
- Forks
- 302
- Issues abiertos
- 32
- Último commit
- hace 6 días
¿Qué es?
Pyinstrument es un profiler estadístico para Python. Muestrea la pila de llamadas mientras se ejecuta un programa y luego indica qué funciones acumulan más tiempo transcurrido, para que puedas centrar los esfuerzos de optimización en la parte más lenta de tu código.
Ofrece un modo de línea de comandos (`pyinstrument script.py`), una API de Python con un bloque `with` o un decorador para perfilar una parte específica del código, y renderizadores para texto en consola, HTML interactivo, JSON y archivos pstats y speedscope. También admite código async: muestra el tiempo que las coroutines pasan esperando. Además, incluye integraciones para middleware de Django, magias de IPython/Jupyter y ejemplos para FastAPI y aiohttp.
De forma predeterminada, oculta los frames del código de bibliotecas y destaca el de tu propia aplicación, para que la salida se centre en las partes que puedes controlar.
Funciones clave
- 01Muestrea la pila de llamadas con poca sobrecarga e informa el tiempo por función.
- 02Formatos de salida para consola, HTML interactivo, JSON y archivos pstats y speedscope.
- 03Profiling con soporte para async que atribuye correctamente el tiempo de espera a la llamada correspondiente.
- 04Permite perfilar un script completo desde la línea de comandos o un bloque específico con una sentencia `with` o un decorador.
- 05Integraciones para middleware de Django y comandos mágicos de IPython/Jupyter.
- 06Oculta los frames de bibliotecas de forma predeterminada para destacar el código de la aplicación.
Casos de uso
- Encontrar la función lenta que hace que un script de Python tarde demasiado en ejecutarse.
- Perfilar una vista o un middleware de Django para ver en qué se va el tiempo de una solicitud.
- Diagnosticar código async lento en el que las tareas pasan tiempo esperando operaciones de E/S.
- Analizar directamente en Jupyter el rendimiento de una celda de un notebook.
Inicio rápido
- 1
Instalar pyinstrument desde PyPI
pip install pyinstrument - 2
Perfilar un script desde la línea de comandos
pyinstrument script.py
Antes de usarlo
- El README indica que la creación de perfiles dentro de contenedores Docker puede dar resultados extraños debido a la lentitud de las llamadas al sistema de temporización.
- Las clases serializadas con pickle en scripts ejecutados con pyinstrument pueden provocar errores de serialización de `__main__`.
En colecciones
Temas
Preguntas frecuentes
- ¿Qué es pyinstrument?
- Un profiler de pila de llamadas para Python que muestra en qué partes de tu código se va el tiempo, con formatos de salida para consola, HTML y otros. Pyinstrument es un profiler estadístico para Python. Muestrea la pila de llamadas mientras se ejecuta un programa y luego indica qué funciones acumulan más tiempo transcurrido, para que puedas centrar los esfuerzos de optimización en la parte más lenta de tu código.
- ¿pyinstrument es gratuito? ¿Qué licencia tiene?
- pyinstrument es open source bajo la licencia BSD-3-Clause. Revisa los términos de la licencia antes de usarlo en productos comerciales.
- ¿pyinstrument sigue mantenido?
- Mantenimiento activo. El último commit de pyinstrument fue el 1 nov 2026.
- ¿Para qué puedo usar pyinstrument?
- Encontrar la función lenta que hace que un script de Python tarde demasiado en ejecutarse. Perfilar una vista o un middleware de Django para ver en qué se va el tiempo de una solicitud. Diagnosticar código async lento en el que las tareas pasan tiempo esperando operaciones de E/S. Analizar directamente en Jupyter el rendimiento de una celda de un notebook.
- ¿Cómo se instala pyinstrument?
- Instalar pyinstrument desde PyPI: pip install pyinstrument Perfilar un script desde la línea de comandos: pyinstrument script.py
- ¿Dónde consigo pyinstrument?
- El código fuente y las instrucciones de instalación están en GitHub: https://github.com/joerick/pyinstrument
Resumen generado por IA a partir del README del proyecto. Las estadísticas de GitHub se actualizan a diario.
Proyectos relacionados
Profiler en tiempo real e interfaz de inspección para Django que registra solicitudes, consultas SQL y bloques de código para encontrar puntos lentos.
Un profiler para Linux que usa Intel Processor Trace para registrar cada llamada a función de un proceso y mostrarla en una línea de tiempo interactiva.
Un profiler de muestreo para programas Python que se conecta a procesos en ejecución sin modificar el código ni reiniciarlos.
Paquete para Laravel que integra PHP Debug Bar y añade una barra de desarrollo con consultas, rutas, vistas, eventos, logs y más.
Extensión de Flask que supervisa automáticamente el rendimiento de los endpoints, perfila las solicitudes y detecta valores atípicos y excepciones mediante un dashboard integrado.