все Python 3cProfileфункция
cProfile.run()
запуск профилировщика
Профилирует строку кода через exec() и печатает таблицу: сколько раз вызвана каждая функция и сколько времени в ней прошло.
Синтаксис
cProfile.run(command, filename=None, sort=-1)
Код выполняется в пространстве имён модуля __main__, поэтому локальные переменные вызывающей функции не видны: cProfile.run('sorted(data)') внутри main() даёт NameError — для них нужен runctx(). С filename таблица не печатается, а сохраняется в двоичный файл для pstats, а не в текст. sort='cumulative' сразу показывает, где тратится время с учётом вложенных вызовов.
Примеры
import cProfile
def slow():
return sum(i * i for i in range(10000))
cProfile.run('slow()', sort='cumulative') # → ? таблица вызовов, время зависит от машины
import cProfile
def main():
data = list(range(1000))
try:
cProfile.run('sorted(data)')
except NameError as e:
print(e) # → name 'data' is not defined
main()
См. также
Частые ошибки
Открыть в полном глоссарииdocs.python.orgСообщить о неточности