Ich benutze jetzt cProfile, aber ich finde es mühsam, pstats-Code zu schreiben, nur um die Statistikdaten abzufragen.
Ich suche ein visuelles Tool, das mir zeigt, was mein Python-Code in Bezug auf CPU-Zeit und Speicherzuweisung tut.
Einige Beispiele aus der Java-Welt sind visualvm und JProfiler .
- Gibt es so etwas?
- Gibt es eine IDE, die dies tut?
- Würde dtrace helfen?
Ich kenne KCachegrind für Linux, würde aber etwas bevorzugen, das ich unter Windows / Mac ausführen kann, ohne KDE zu installieren.
python
user-interface
profiling
profiler
Frederik
quelle
quelle
Antworten:
Ein Freund und ich haben einen Python-Profil-Viewer namens SnakeViz geschrieben , der in einem Webbrowser ausgeführt wird. Wenn Sie RunSnakeRun bereits erfolgreich verwenden, fügt SnakeViz möglicherweise nicht so viel Wert hinzu, aber SnakeViz ist viel einfacher zu installieren.
Bearbeiten: SnakeViz unterstützt Python 2 und 3 und funktioniert auf allen wichtigen Systemen.
quelle
Mir ist nur RunSnakeRun bekannt .
Vor einiger Zeit wurde auch über einen in PyDev (Eclipse) integrierten Profiler gesprochen, aber ich weiß nicht, ob dies jemals das Licht der Welt erblicken wird.
Update: Leider scheint RunSnakeRun nicht mehr gewartet zu werden und Python 3 wird nicht unterstützt.
quelle
Ich benutze gprof2dot.py. Das Ergebnis sieht so aus . Ich benutze diese Befehle:
Sie müssen graphviz und gprof2dot.py installiert haben. Möglicherweise möchten Sie ein Convenience-Shell-Skript .
quelle
Spyder bietet auch eine hübsche Benutzeroberfläche für cProfile:
quelle
Python Tools für Visual Studio enthält einen sehr gut gemachten grafischen Profiler: http://www.youtube.com/watch?v=VCx7rlPyEzE&hd=1
http://pytools.codeplex.com/
quelle
Diese Person hat ein grafisches Profil erstellt, das hier beschrieben wird . Vielleicht könnten Sie das als Ausgangspunkt für Ihre eigene Arbeit verwenden.
quelle
KCacheGrind enthält eine Version namens QCacheGrind, die unter Mac OS X und Windows ausgeführt wird .
quelle
apt-get install kcachegrind
lediglich 3 KDE-bezogene Bibliotheken.apt install kcachegrind
möchte 102 Pakete installieren, einschließlich ~ 40 KDE-Bibliotheken.ubuntu:xenial
mag es dreimal so viele sein, aber es ist für eine Entwicklungsumgebung und ich sehe es kaum als Problem. Undapt-cache depends --recurse --no-recommends --no-suggests --no-conflicts --no-breaks --no-replaces --no-enhances --no-pre-depends kcachegrind | grep kde | grep Depends | sort -u | wc -l
sagt eigentlich nur 13.Probieren Sie Snakeviz aus. Sehr einfach zu installieren (via Pip) und es ist browserbasiert.
https://jiffyclub.github.io/snakeviz/
quelle
Python Call Graph generiert Bilder, die denen in Maxys Antwort sehr ähnlich sind . Außerdem wird die Gesamtzeit für jede Funktion angezeigt. Aus irgendeinem Grund wird sie in den Beispieldiagrammen nicht angezeigt.
quelle
Ich habe ein browserbasiertes Visualisierungstool geschrieben, profile_eye , das mit der Ausgabe von gprof2dot arbeitet .
gprof2dot eignet sich hervorragend zum Grokken vieler Ausgaben von Profilierungswerkzeugen und leistet hervorragende Arbeit bei der Platzierung von Diagrammelementen. Das endgültige Rendering ist eine statische Grafik, die oft sehr überladen ist.
Mit d3.js können Sie einen Großteil dieser Unordnung beseitigen, indem Sie nicht fokussierte Elemente, QuickInfos und eine Fischaugenverzerrung relativ verblassen lassen .
Zum Vergleich siehe profile_eyes Visualisierung des von gprof2dot verwendeten kanonischen Beispiels . Insbesondere für Python siehe ein cProfile-Ausgabebeispiel .
quelle
Betrachten Sie Pyflame + Flammengraph
Pyflame: Ein Ptracing-Profiler für Python + Flamegraph
https://github.com/uber/pyflame
Mit pyflame können Sie einen laufenden Python-Prozess verfolgen.
quelle
Ich habe benutzt plop verwendet und fand es sehr leicht. Gibt einen schnellen Einblick in die Perf.
quelle