Загружаем изображение…

Знаете, что Python позволяет перехватывать выполнение кода прямо в рантайме?



В CPython есть API sys.settrace(), который даёт доступ к событиям выполнения Python-кода — на уровне функций и строк:
sys.settrace(tracer)

Функция-трейсер получает текущий frame, имя функции, номер строки и тип события:
frame.f_code.co_name
frame.f_lineno
event # 'call', 'line', 'return', 'exception'


На этом механизме работают отладчики, профайлеры, coverage-инструменты и системы анализа кода:
def tracer(frame, event, arg):

Можно логировать вызовы, отслеживать поведение кода или строить свой дебаггер, без изменения исходников.

Механизм даёт заметный overhead, поэтому не подходит для бездумного использования.

sys.settrace — это низкоуровневый хук интерпретатора для анализа и инструментирования выполнения Python-кода.

Python Ready | #совет
Просмотры: 218
Открыть в MAX Сообщить о неточности

Репосты публикации

Публикация канала

Сообщить о неточности

Опишите, что нужно исправить. Если есть источник, добавьте ссылку.

Вы покидаете datool.ru

Ссылка ведёт на внешний сайт. datool.ru не отвечает за его содержимое — проверьте адрес, прежде чем вводить пароли или платёжные данные.

Переход через 10 с

Перейти