Leistungsprofiler für Python

Ich suche einen Performance-Profiler, um meine Python-Programme zu analysieren.

Anforderungen:

  • funktioniert unter Windows (mindestens Windows 10, Windows 7 wäre schön).
  • kann kommerziell sein.
  • zumindest Stichproben unterstützen (statistischer Ansatz).
  • idealerweise Instrumentierung unterstützen (Änderung des Codes).
  • Unterstützung für Python 2 und 3. Wenn Ihr Tool nur eine Version unterstützt, erwähnen Sie das bitte, damit ich nach einem anderen Tool für die andere Version suchen kann.
  • UI für den Umgang mit allen Daten.
  • Hierarchische Anzeige, wo die Zeit verbracht wird.
  • Fokus ("Zoom") in eine Methode und Neuskalierung auf 100 %.

Wenn Sie Jetbrains dotTrace für .NET-Code kennen , dann ist das ungefähr das, wonach ich suche. Wer es nicht kennt, hier ein kleiner Screenshot:

Screenhost von dotTrace in Aktion

Ich habe versucht:

  • Wenn man sich diese Frage ansieht , fragt man sich, "wo der Dolmetscher die meiste Zeit verbringt". Ich möchte keine Informationen über den Interpreter, ich möchte Informationen über meinen Code. Außerdem beschränkt sich meine Frage auf Windows.

Ich will nicht

  • timeit oder ähnliche Dinge, die ich manuell in meinen Code einfügen muss.
  • live-trace geht in die richtige Richtung. Ich suche etwas mit mehr GUI.

Antworten (1)

Ich würde vorschlagen, mit Pythons eigenem cProfile -Modul zu beginnen:

  1. Beim Profiling eines Programms müssen Sie Ihren Code in keiner Weise ändern
  2. Kommt mit Python (so kostenlos)!
  3. Funktioniert unter Windows (und den meisten anderen Plattformen).
  4. Python 2 & 3

So profilieren Sie Ihr Python-Programm:

python -m cProfile -o output_file_name YouProgram.py

Dann testen Sie Ihr Programm auf Herz und Nieren (natürlich können Sie alle erforderlichen Parameter am Ende der obigen Zeile hinzufügen) . Dadurch werden die Profilinformationen unter dem angegebenen Dateinamen gespeichert.

Sie können die Statistiken dann mit dem pstats -Modul untersuchen – damit können Sie die Statistiken in einer Python-Sitzung untersuchen. Alternativ können Sie SnakeViz verwenden, um es in einem Browser oder RunSnakeRun Profile Viewer GUI anzuzeigen, um es bequemer anzuzeigen - letzteres läuft auf Python 3.x, sollte aber Profile von Python 2-Läufen ohne Probleme anzeigen .

LaufSchlangeLauf

Das sieht gut aus. Ich werde es versuchen, wenn ich am Montag wieder in der Firma bin.