Python — od podstaw do zaawansowanego · Performance i profilowanie
cProfile, pstats i sampling: py-spy, line_profiler
Performance i profilowanie
Wprowadzenie
cProfile to wbudowany w Pythona profiler funkcji. Mierzy, ile czasu KAŻDA funkcja zużyła w trakcie wykonania programu. Odpowiada na pytanie: „gdzie program spędza 90% czasu?" — czyli na hotspot, który warto optymalizować.
cProfile to profiler DETERMINISTYCZNY: instrumentuje każde wywołanie funkcji (wpięcie w sys.setprofile). Daje precyzyjne dane, ale dorzuca overhead 1.5-3x. Alternatywa to profilery SAMPLINGOWE jak py-spy — próbkują stos co N milisekund, overhead poniżej 5%, działają na produkcji.
Lekcja pokazuje: jak uruchomić cProfile w skrypcie i z CLI, jak analizować wynik pstats (cumtime vs tottime, ncalls), jak go wizualizować snakeviz i gprof2dot, kiedy sięgnąć po line_profiler (pomiar linia-po-linii) oraz po py-spy (sampling, produkcja).