Profilowanie skryptów Pythona oraz Django za pomocą cProfile i Kcachegrind
Swego czasu pisałem o profilowaniu Django za pomocą hotshot z mod_pythonem. Teraz mamy inne narzędzia by profilować wykonywanie skryptów Pythona, np. cProfile i różne nakładki. Tak jak poprzednio dane wyjściowe można przekazać do kcachegrind by je zobrazować i wyszukać interesujące nas fragmenty kodu. Zobaczmy więc czym dzisiaj dysponujemy.
Profilowanie z cProfile
Najprostszy przypadek do wywołanie skryptu z flagami profilera:
Instalując z pypi pakiet pyprof2calltree można skonwertować plik do formatu kompatybilnego z kcachegrindem i go nawet od razu uruchomić:
To rozwiązanie pozwala profilować skrypty jakie możemy wykonać. Dotyczy to też np. testów, czy management commands
Django - ale do tego trzeba użyć lokalnego pliku manage.py a nie django-admin.
Prosty dekorator zapewnia profilestats, który zapisuje do pliku (cachegrind.out.profilestats).
Dla Django lepsze może być django-extensions. Instalujemy, dodajemy do INSTALLED_APPS i możemy odpalić serwer deweloperski poleceniem:
W podanym katalogu generowane będą pliki z wynikami. Wystarczy w kcachegrind otworzyć wybrany plik.
Instalacja Kcachegrind
Kcachegrind wchodzi w skład aplikacji KDE. Pod Linuksem jego instalacja to nie problem. Pod Windowsem można użyć instalatora KDE4 dla Windowsa lub Qcachegrind, a pod OSX aplikacje KDE też są dostępne przez repozytoria Linuksowo/Uniksowych pakietów. Zawsze też można odpalić desktopowego Linuksa w maszynie wirtualnej.
Comment article