Python 3.9+pstatsпонятие
pstats.FunctionProfile
программный доступ
Датакласс со статистикой одной функции из профиля: ncalls, tottime, cumtime, время на вызов, файл и строка.
Синтаксис
fp = stats.get_stats_profile().func_profiles['имя']
Получают его из Stats.get_stats_profile().func_profiles, а не создают сами. Ловушка: ncalls — строка, а не число, потому что у рекурсии она вида '177/1'; сравнение ncalls > 100 падает с TypeError, а int('177/1') — с ValueError. Числа лежат в tottime и cumtime (секунды, float), file_name и line_number указывают, где функция определена.
Примеры
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)
fp = pstats.Stats(pr).get_stats_profile().func_profiles['fib']
print(type(fp).__name__) # → FunctionProfile
print(repr(fp.ncalls)) # → '177/1'
print(isinstance(fp.cumtime, float)) # → True
См. также
Частые ошибки
Открыть в полном глоссарииdocs.python.orgСообщить о неточности