tprof¶
tprof misst ab Python 3.12 die Zeit,
die beim Ausführen eines Moduls in bestimmten Funktionen verbracht wird. Im
Gegensatz zu anderen Profilern verfolgt es nur die angegebenen Funktionen mit
sys.monitoring, wodurch man sich das Filtern sparen kann.
tprof unterstützt die Verwendung als Befehlszeilenprogramm und mit einer
Python-Schnittstelle:
uv run tprof -t MODULE:FUNCTION (-m MODULE | PATH/TO/SCRIPT)Angenommen, ihr habt festgestellt, dass die Erstellung von
pathlib.Path-Objekten immain-Modul euren Code verlangsamt. So könnt ihr dies mittprofmessen:$ uv run tprof -t pathlib:Path.open -m main 🎯 tprof results: function calls total mean ± σ min … max pathlib:Path.open() 1 93μs 93μs 93μs … 93μs
Mit der
-x-Option könnt ihr auch zwei Funktionen miteinander vergleichen:$ uv run tprof -x -t old -m main -t new -m main 🎯 tprof results: function calls total mean ± σ min … max delta main:old() 1 41μs 41μs 41μs … 41μs - main:new() 1 20μs 20μs 20μs … 20μs -50.67%
tprof(*targets, label: str | None = None, compare: bool = False)verwendet diesen Code als Kontextmanager in eurem Code, um ein Profil in einem bestimmten Block zu erstellen. Der Bericht wird jedes Mal ausgegeben, wenn der Block durchlaufen wurde.
*targetssind aufrufbare Elemente zum Profiling oder Referenzen zu Elementen, die mit
pkgutil.resolve_name()aufgelöst werden.labelist eine optionale Zeichenfolge, die als Kopfzeile dem Bericht hinzugefügt werden kann.
compareauf
Truegesetzt, wird der Vergleichsmodus aktiviert.
Beispiel:
from pathlib import Path from tprof import tprof with tprof(Path.open): p = Path("docs", "save-data", "myfile.txt") f = p.open()
$ uv run python main.py 🎯 tprof results: function calls total mean ± σ min … max pathlib:Path.open() 1 82μs 82μs 82μs … 82μs