Pull to refresh

Comments 1

Поначалу я споткнулся на поиске объектов, так как команда objgraph.by_type('types.TracebackType') не находила вообще ничего. И это — несмотря на то, что я знал о том, что имеется огромное количество подобных объектов. Оказалось же, что в качестве имени типа надо использовать строку traceback. Причина этого мне не вполне ясна, однако что есть — то есть.

Пошел посмотреть что же там в файле types.py и знаете, лучше бы я этого не делал. Не думал, что от кода в стандартной библиотеке могут волосы на жопе начать шевелиться:


try:
    raise TypeError
except TypeError:
    tb = sys.exc_info()[2]
    TracebackType = type(tb)
    FrameType = type(tb.tb_frame)
    tb = None; del tb

А по сути — by_type ищет по fully-qualified или сокращенному имени класса и обо всех его алиасах, определенных в других местах (типа types.py), функция не знает. Профиль кучи специально отображает fq имена в имена через types. Видимо для наглядности.


inb4 поговорил с переводом, традиции Хабра

Sign up to leave a comment.