Правильный способ использования cProfile

Я хочу профилировать некоторые функции, которые я написал. Я смотрю на документы для cProfile, и я не понимаю, в чем (если таковые имеются) разница между следующими двумя частями кода:

import cProfile

profile = cProfile.Profile()
result = profile.runcall(func, *args, **kwargs)
profile.dump_stats('profile.stats')

а также

import cProfile

profile = cProfile.Profile()
profile.enable()
result = func(*args, **kwargs)
profile.disable()
profile.dump_stats('profile.stats')

Эти два блока эквивалентны, или они делают немного разные вещи?

1 ответ

Решение

Они практически одинаковые: https://github.com/python/cpython/blob/581eb3e0dc0bc0d306363c8d404ffd9988b0cc87/Lib/cProfile.py

runcall остановит профилирование в случае исключений, но в остальном это та же функциональность.

Другие вопросы по тегам