1 Punkte von darjeeling 1 시간 전 | Noch keine Kommentare. | Auf WhatsApp teilen

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.

Noch keine Kommentare.