cProfile/profiling.tracing

Üblicherweise wird in der Kommandozeile mit cProfile oder ab Python 3.15 mit profiling.tracing ein Profil erstellt, das anschließend dessen Profilstatistiken anzeigt. Dies kann jedoch schnell sehr mühsam sein, insbesondere beim Lesen umfangreicher Profile oder beim Sortieren der Daten. Flexibler ist, die Profildaten stattdessen in einer Datei zu speichern, die dann mit dem pstats-Modul gelesen werden kann:

  1. uv run python -m cProfile -o PROFILE (SCRIPT | -m {MODULE) führt cProfile zum Profilerstellung eures Script oder eures Moduls aus und speichert die Ergebnisse in einer Datei, die durch die Option -o angegeben wird.

  2. uv run python -m (cProfile | profiling.tracing) -o profile (SCRIPT | -m MODULE) <<< $'sort cumtimenstats 100' | less übergibt die folgenden beiden Befehle an das pstats-Modul, wobei die $-Syntax verwendet wird.

    sort cumtime

    sortiert die Ausgabe nach kumulativer Zeit, beginnend mit der größten.

    Um nach anderen Metriken zu sortieren, könnt ihr cumtime einfach durch einen Wert aus pstats.Stats.sort_stats() ersetzen.

    stats 100

    zeigt die ersten 100 Zeilen des Profils an.

    Die Ausgabe wird an less übergeben, sodass ihr euch die Ergebnisse anschauen könnt. Drückt q, um den Vorgang zu beenden, wenn ihr fertig seid.

  3. Vor und nach der Optimierung lassen sich einfach vergleichen, z. B. mit:

    $ uv run python -m cProfile -o before.profile main.py
    $ git switch -c main_optimisation
    ...
    $ uv run python -m cProfile -o after.profile main.py