все Python 3cProfileпонятие
cProfile.Profile
запуск профилировщика
Класс профилировщика: включается enable()/disable() или блоком with и собирает статистику только нужного участка кода.
Синтаксис
with cProfile.Profile() as pr: ...
Блок with (с 3.8) надёжнее пары enable()/disable(): профиль закроется и при исключении. Профилируется только текущий поток — работу в threading.Thread он не увидит. ncalls вида 177/1 у рекурсивной функции значит «всего вызовов / из них первичных». Профилировщик сам замедляет мелкие вызовы, поэтому абсолютные времена завышены: сравнивайте доли, а точный замер делайте timeit.
Примеры
import cProfile, pstats
def fib(n):
return n if n < 2 else fib(n - 1) + fib(n - 2)
with cProfile.Profile() as pr:
fib(10)
prof = pstats.Stats(pr).get_stats_profile()
print(prof.func_profiles['fib'].ncalls) # → 177/1
import cProfile
pr = cProfile.Profile()
pr.enable()
total = sum(range(100000))
pr.disable()
pr.print_stats(sort='tottime') # → ? таблица: время зависит от машины
См. также
Открыть в полном глоссарииdocs.python.orgСообщить о неточности