Vorstellung von Tachyon, dem neuen Sampling-Profiler in Python 3.15
(blog.changs.co.uk)Fallbeispiel mit Tachyon, dem in Python 3.15 eingeführten Sampling-Profiler: Visualisierung von Multithreading-Engpässen und Aufspüren von Performance-Fallen in OOP-Abstraktionen
Was ist Tachyon?
Ein Sampling-basierter Profiler, der in Python 3.15 zur Standardbibliothek hinzugefügt wird.
Der entscheidende Punkt ist die native Unterstützung für Free-Threading-Umgebungen (ohne GIL), die bestehende Profiler bisher weitgehend ignoriert haben.
Wichtige Merkmale
- Geringer Overhead durch Sampling
- Unterstützung für gleichzeitiges Profiling aller Threads (
-a-Option) - Remote-Attach an laufende Prozesse möglich
- Unterstützung für verschiedene Ausgabeformate wie Flamegraphs
- async-fähig — auch auf
asyncio-Programme anwendbar
Ausführung
sudo -E uv run -p 3.15.0a6t python -m profiling.sampling run \
-a --flamegraph -o profile.html -r 20khz your_script.py
# -a : Profiling aller Threads zusätzlich zum Main-Thread
# -r 20khz : 20.000 Samples pro Sekunde (Präzision anpassbar)
# Ergebnis : Flamegraph-HTML — die roten Spalten sind die Hot Paths
Praxisbeispiel — Erkennung von Free-Threading-Engpässen
Vor der Optimierung — Grid-Zugriff über __getitem__ machte 75 % der gesamten Laufzeit aus
<https://blog.changs.co.uk/images/unoptimised-bench.png>
Nach der Optimierung — nach Umstellung auf direkten Zugriff auf das interne Tuple auf 5,32 % reduziert
<https://blog.changs.co.uk/images/optimised-bench.png>
Warum das wichtig ist
- Bisher ließen sich Performance-Probleme beim Free Threading praktisch nur „nach Gefühl“ finden
- Tachyon ist das erste offizielle Tool, das visuell zeigt, wo Threads blockieren
- Auch normale Python-Entwickler können die Free-Threading-Performance nun direkt messen und verbessern
Noch keine Kommentare.