hotshot — Высокопроизводительный профилировщик логов
Новое в версии 2.2.
Этот модуль предоставляет более удобный интерфейс к модулю _hotshot C. Hotshot — это замена существующему модулю profile. Поскольку он написан в основном на C, он должен оказывать значительно меньшее влияние на производительность, чем существующий модуль profile.
Примечание
Модуль hotshot фокусируется на минимизации накладных расходов во время профилирования, ценой больших времен обработки данных после профилирования. Для обычного использования рекомендуется использовать cProfile вместо него. hotshot больше не поддерживается и может быть удален из стандартной библиотеки в будущем.
Изменено в версии 2.5: Результаты должны быть более осмысленными, чем раньше: ядро тайминга содержало критическую ошибку.
Примечание
Профилировщик hotshot пока не работает хорошо с потоками. При возможности полезно использовать скрипт без потоков для запуска профилировщика над кодом, который вы хотите измерить.
-
class hotshot.Profile(logfile[, lineevents[, linetimings]]) -
Объект профилировщика. Аргумент logfile — имя файла журнала для записи данных профилирования. Аргумент lineevents определяет, нужно ли генерировать события для каждой строки исходного кода, или только при вызове/возврате функций. По умолчанию
0(только регистрировать вызовы/возвраты функций). Аргумент linetimings определяет, нужно ли записывать временную информацию. По умолчанию1(хранить временную информацию).
1. Объекты профилирования
Объекты профилирования имеют следующие методы:
-
Profile.addinfo(key, value) -
Добавляет произвольное помеченное значение в вывод профилирования.
-
Profile.close() -
Закрывает файл журнала и завершает работу профилировщика.
-
Profile.fileno() -
Возвращает дескриптор файла журнала профилировщика.
-
Profile.run(cmd) -
Профилирует
exec-совместимую строку в среде скрипта. Глобальные переменные из модуля__main__используются как глобальные и локальные переменные для скрипта.
-
Profile.runcall(func, *args, **keywords) -
Профилирует единственный вызов вызываемого объекта. Дополнительные позиционные и ключевые аргументы могут быть переданы; результат вызова возвращается, а исключения разрешено распространяться без проблем, при этом гарантируется, что профилирование отключено по выходу.
-
Profile.runctx(cmd, globals, locals) -
Выполняет
exec-совместимую строку в определенной среде. Строка компилируется перед началом профилирования.
-
Profile.start() -
Запускает профилировщик.
-
Profile.stop() -
Останавливает профилировщик.
2. Использование данных hotshot
Новое в версии 2.2.
Этот модуль загружает данные профилирования hotshot в стандартные объекты pstats Stats.
-
hotshot.stats.load(filename) -
Загружает данные hotshot из filename. Возвращает экземпляр класса
pstats.Stats.
3. Пример использования
Обратите внимание, что этот пример запускает питонский «бенчмарк» pystones. Он может занимать некоторое время, и создаст большие выходные файлы.
>>> import hotshot, hotshot.stats, test.pystone
>>> prof = hotshot.Profile("stones.prof")
>>> benchtime, stones = prof.runcall(test.pystone.pystones)
>>> prof.close()
>>> stats = hotshot.stats.load("stones.prof")
>>> stats.strip_dirs()
>>> stats.sort_stats('time', 'calls')
>>> stats.print_stats(20)
850004 function calls in 10.090 CPU seconds
Ordered by: internal time, call count
ncalls tottime percall cumtime percall filename:lineno(function)
1 3.295 3.295 10.090 10.090 pystone.py:79(Proc0)
150000 1.315 0.000 1.315 0.000 pystone.py:203(Proc7)
50000 1.313 0.000 1.463 0.000 pystone.py:229(Func2)
.
.
.
© 2001–2020 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/2.7/library/hotshot.html