Présentation de Tachyon, le nouveau profileur d’échantillonnage de Python 3.15
(blog.changs.co.uk)Présentation de Tachyon, le profileur par échantillonnage introduit dans Python 3.15, avec des cas montrant comment visualiser les goulots d’étranglement en multithreading et repérer les pièges de performance liés aux abstractions POO
Qu’est-ce que Tachyon ?
Un profileur basé sur l’échantillonnage qui sera ajouté à la bibliothèque standard de Python 3.15.
Son point clé est la prise en charge native des environnements free-threading (sans GIL), que les profileurs existants avaient jusque-là délaissés.
Principales caractéristiques
- Faible surcoût grâce à l’échantillonnage
- Prise en charge du profilage simultané de tous les threads (option
-a) - Possibilité de s’attacher à distance à un processus en cours d’exécution
- Prise en charge de plusieurs formats de sortie, dont les flamegraphs
- Compatible async — peut aussi s’appliquer aux programmes
asyncio
Comment l’exécuter
sudo -E uv run -p 3.15.0a6t python -m profiling.sampling run \
-a --flamegraph -o profile.html -r 20khz your_script.py
# -a : profile tous les threads en plus du thread principal
# -r 20khz : échantillonnage à 20 000 fois par seconde (précision ajustable)
# résultat : flamegraph HTML — les colonnes rouges indiquent le hot path
Cas réel d’application — détection d’un goulot d’étranglement en free-threading
Avant optimisation — l’accès à Grid via __getitem__ représentait 75 % du temps d’exécution total
<https://blog.changs.co.uk/images/unoptimised-bench.png>
Après optimisation — après passage à un accès direct au tuple interne, ce chiffre est tombé à 5,32 %
<https://blog.changs.co.uk/images/optimised-bench.png>
Pourquoi c’est important
- Jusqu’à présent, les problèmes de performance en free-threading ne pouvaient être trouvés qu’« à l’intuition »
- Tachyon est le premier outil officiel à montrer visuellement où les threads se bloquent
- Il ouvre la voie aux développeurs Python généralistes pour mesurer et améliorer eux-mêmes les performances du free-threading
Aucun commentaire pour le moment.