Teraz używam cProfile, ale pisanie kodu pstats tylko po to, aby przeszukiwać dane statystyczne, wydaje mi się żmudne.
Szukam narzędzia wizualnego, które pokazuje mi, co robi mój kod Pythona pod względem czasu procesora i alokacji pamięci.
Niektóre przykłady ze świata Java to visualvm i JProfiler .
- Czy coś takiego istnieje?
- Czy istnieje środowisko IDE, które to robi?
- Czy dtrace pomoże?
Wiem o KCachegrind dla Linuksa, ale wolałbym coś, co mogę uruchomić na Windows / Mac bez instalowania KDE.
python
user-interface
profiling
profiler
Frederik
źródło
źródło
Odpowiedzi:
Razem z przyjacielem napisaliśmy przeglądarkę profili Pythona o nazwie SnakeViz, która działa w przeglądarce internetowej. Jeśli już pomyślnie korzystasz z RunSnakeRun, SnakeViz może nie dodać tak dużej wartości, ale SnakeViz jest znacznie łatwiejszy do zainstalowania.
Edycja: SnakeViz obsługuje Python 2 i 3 i działa na wszystkich głównych systemach.
źródło
Jestem świadomy tylko RunSnakeRun .
Jakiś czas temu mówiono też o zintegrowanym profilerze w PyDev (Eclipse), ale nie wiem, czy kiedykolwiek ujrzy światło dzienne.
Aktualizacja: Niestety wygląda na to, że RunSnakeRun nie jest już utrzymywany i nie obsługuje Pythona 3.
źródło
Używam gprof2dot.py. Wynik wygląda następująco . Używam tych poleceń:
Musisz mieć zainstalowane oprogramowanie graphviz i gprof2dot.py . Może ci się spodobać wygodny skrypt powłoki .
źródło
Spyder zapewnia również całkiem niezły interfejs użytkownika dla cProfile:
źródło
Python Tools for Visual Studio zawiera bardzo dobrze wykonany graficzny profiler: http://www.youtube.com/watch?v=VCx7rlPyEzE&hd=1
http://pytools.codeplex.com/
źródło
Ta osoba stworzyła profil graficzny, opisany tutaj . Może mógłbyś to wykorzystać jako punkt wyjścia do własnej pracy.
źródło
KCacheGrind zawiera wersję o nazwie QCacheGrind, która działa w systemie Mac OS X i Windows .
źródło
apt-get install kcachegrind
zainstalowanie tylko 3 bibliotek związanych z KDE.apt install kcachegrind
chce zainstalować 102 pakiety, w tym ~ 40 bibliotek KDE.ubuntu:xenial
może ich być trzy razy więcej, ale dotyczy środowiska programistycznego i prawie nie postrzegam tego jako problemu. I faktycznieapt-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
mówi tylko 13.Wypróbuj Snakeviz. Bardzo łatwy w instalacji (przez pip) i oparty na przeglądarce.
https://jiffyclub.github.io/snakeviz/
źródło
Python Call Graph generuje zdjęcia bardzo podobne do tych w odpowiedzi maxy . Pokazuje również całkowity czas dla każdej funkcji, z jakiegoś powodu nie jest odzwierciedlony na przykładowych wykresach.
źródło
Napisałem oparte na przeglądarce narzędzie do wizualizacji, profile_eye , które działa na wyjściu gprof2dot .
gprof2dot świetnie radzi sobie z analizowaniem wyników wielu narzędzi do profilowania i świetnie radzi sobie z umieszczaniem elementów wykresu. Ostateczne renderowanie to statyczna grafika, która często jest bardzo zagracona.
Korzystając z d3.js , można usunąć większość tego bałaganu, poprzez względne zanikanie nieostre elementy, podpowiedzi i zniekształcenie typu rybie oko .
Dla porównania, zobacz wizualizację profile_eye jest na przykład używane przez gprof2dot kanonicznej . W szczególności w przypadku języka Python zobacz przykład danych wyjściowych cProfile .
źródło
Weźmy pod uwagę pyflame + flamegraph
Pyflame: Ptracing Profiler dla Pythona + flamegraph
https://github.com/uber/pyflame
Możesz prześledzić działający proces w Pythonie za pomocą pyflame.
źródło
Użyłem plop i stwierdziłem, że jest bardzo lekki. Daje szybki wgląd w perf.
źródło