Python 3.4+tracemallocпонятие
tracemalloc.Traceback
трассы и кадры
Последовательность объектов Frame — стек вызовов в момент выделения памяти; метод format() даёт строки как в трассировке ошибки.
Синтаксис
tb.format(limit=None, most_recent_first=False) -> list[str]
С Python 3.7 кадры идут от самого старого к самому свежему, а не наоборот: tb[0] — точка входа, tb[-1] — строка, где память выделена. format(most_recent_first=True) переворачивает порядок для печати. Кадров не больше nframe из start(), по умолчанию один — тогда tb[0] и tb[-1] совпадают.
Примеры
import tracemalloc
tracemalloc.start(5)
def inner():
return bytes(1000)
def outer():
return inner()
tb = tracemalloc.get_object_traceback(outer())
print([frame.lineno for frame in tb]) # → [7, 6, 4]
print(tb.format(most_recent_first=True)[1].strip()) # → return bytes(1000)
tracemalloc.stop()
См. также
Открыть в полном глоссарииdocs.python.orgСообщить о неточности