Python Glossary English

Python 3.4+tracebackфункция

traceback.clear_frames()

кадры и стек

Очищает локальные переменные во всех кадрах трассировки, чтобы сохранённое исключение не удерживало в памяти данные упавших функций.

Синтаксис

traceback.clear_frames(tb)

Пойманное исключение через __traceback__ держит кадры, а кадры — все локальные переменные: сохранили e в список ошибок — и огромный массив из упавшей функции не освободится. clear_frames(tb) вызывает frame.clear() у каждого кадра; кадр, который ещё исполняется (например, текущий), пропускается молча. После очистки трассировка печатается как раньше — файлы и номера строк остаются, пропадают только переменные.

Примеры

import traceback
def load():
    data = list(range(100_000))
    raise ValueError('сбой')
try:
    load()
except ValueError as e:
    err = e
frame = err.__traceback__.tb_next.tb_frame
print(len(frame.f_locals))  # → 1
traceback.clear_frames(err.__traceback__)
print(len(frame.f_locals))  # → 0
print(len(traceback.extract_tb(err.__traceback__)))  # → 2

См. также

Открыть в полном глоссарииdocs.python.orgСообщить о неточности