Python Glossary English

все 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Сообщить о неточности