Introducción a Tachyon, el nuevo perfilador por muestreo de Python 3.15
(blog.changs.co.uk)Caso de uso de Tachyon, el perfilador por muestreo incorporado en Python 3.15, para visualizar cuellos de botella en multihilo y detectar trampas de rendimiento en abstracciones OOP.
¿Qué es Tachyon?
Un perfilador basado en muestreo que se añadirá a la biblioteca estándar en Python 3.15.
Su punto clave es que soporta de forma nativa entornos free-threading (sin GIL), algo que los perfiladores anteriores habían pasado por alto.
Características principales
- Método de muestreo con bajo overhead
- Soporte para perfilado simultáneo de todos los hilos (opción
-a) - Posibilidad de adjuntarse remotamente (attach) a un proceso en ejecución
- Soporte para varios formatos de salida, como flamegraphs
- Reconoce async — también puede aplicarse a programas con asyncio
Cómo ejecutarlo
sudo -E uv run -p 3.15.0a6t python -m profiling.sampling run \
-a --flamegraph -o profile.html -r 20khz your_script.py
# -a : perfila todos los hilos además del hilo principal
# -r 20khz : 20,000 muestras por segundo (la precisión puede ajustarse)
# resultado : HTML de flamegraph — la columna roja es el hot path
Caso real de uso — detección de cuellos de botella en free-threading
Antes de optimizar — el acceso a Grid mediante __getitem__ ocupaba el 75% del tiempo total de ejecución
https://blog.changs.co.uk/images/unoptimised-bench.png
Después de optimizar — al cambiar a acceso directo al tuple interno, se redujo a 5.32%
https://blog.changs.co.uk/images/optimised-bench.png
Por qué importa
- Hasta ahora, los problemas de rendimiento en free-threading solo podían encontrarse “a ojo”
- Tachyon es la primera herramienta oficial que muestra visualmente dónde se bloquean los hilos
- Se abre el camino para que desarrolladores de Python en general puedan medir y mejorar directamente el rendimiento en free-threading
Aún no hay comentarios.