El perfilado de Python ha experimentado una transformación significativa en los últimos dos años, impulsada por la integración de herramientas de muestreo en la biblioteca estándar y el despliegue masivo de compilaciones sin hilos. CPython 3.14 introdujo la capacidad de inspeccionar gráficas de tareas de asyncio desde el exterior del proceso, mientras que CPython 3.15 incorporó un perfilador de muestreo nativo. Este artículo técnico examina el panorama actual de los principales perfiladores de muestreo, destacando la superioridad de los métodos estadísticos sobre los de trazado determinista en términos de sobrecarga y precisión, según estudios de la UMass Amherst.
El texto compara cuatro herramientas clave: Austin, Tachyon, py-spy y Scalene. Austin, escrito en C, destaca por su alta velocidad de muestreo, alcanzando 10.000 muestras por segundo en su versión 4.1, lo que permite una estimación más precisa del tiempo de ejecución. Tachyon, que ahora forma parte de la biblioteca estándar, prioriza la velocidad con un núcleo en C, aunque con una tasa de muestreo más conservadora por defecto. py-spy y Scalene son también herramientas de muestreo de alto rendimiento, aunque Scalene opera dentro del proceso, lo que limita su capacidad para analizar sistemas en producción sin reinicio.
El artículo detalla cómo el perfilado fuera de proceso, que antes requería copias de cabeceras privadas del intérprete, se ha vuelto viable gracias a mejoras en CPython 3.11, como la inclusión de nombres de código cualificados y identificadores de hilos nativos. Estas modificaciones permiten a los perfiladores externos acceder a información precisa sin instrumentar el código. La tendencia actual muestra un cambio de paradigma: de la precisión absoluta de llamadas (trazado) a la eficiencia y la estabilidad en producción (muestreo), con un creciente interés por el uso de agentes de código para el análisis de rendimiento.
