Гуппи / Хипи на Windows с Python 2.7.6

Я только что установил гуппи 0.1.10. Затем набрав в Ipython 2.1.0

from guppy import hpy
hp = hpy()

вызывает сбой консоли, то есть Windows сообщает мне, что python.exe только что потерпел крах. Есть ли обходной путь? Или тяжелая альтернатива?

1 ответ

Решение

У меня были такие же проблемы с гуппи / хипи. Гуппи в настоящее время немного устарела. Есть какой-то патч, но я больше не могу его найти. Однако это не сработало для меня в Python 2.7. У вас также могут возникнуть проблемы из-за дуги ОС (64 бит!?).

Есть и другие вопросы о методах профилирования памяти:

Я лично считаю, что наиболее ценными альтернативами являются:

Полезно также рассчитать размер ваших объектов и отследить его самостоятельно. Я разработал некоторый код (первоначально по Noctis Skytower), который я нашел в одном из вопросов Stackru ( приблизительно, сколько памяти будет занимать список из 80000 элементов в python?) совместим с Python 2.7 (должен работать и в 3):

totalSizeOf = lambda obj: sum(map(sys.getsizeof, explore(obj, set())))
def explore(obj, memo):
    loc = id(obj)
    if loc not in memo:
        memo.add(loc)
        yield obj
        # Handle instances with slots.
        try:
            slots = obj.__slots__
        except AttributeError:
            pass
        else:
            for name in slots:
                try:
                    attr = getattr(obj, name)
                except AttributeError:
                    pass
                else:
                    #yield from explore(attr, memo)
                    for bar in explore(attr, memo):
                        yield bar
        # Handle instances with dict.
        try:
            attrs = obj.__dict__
        except AttributeError:
            pass
        else:
            #yield from explore(attrs, memo)
            for bar in explore(attrs, memo):
                yield bar
        # Handle dicts or iterables.
        for name in 'keys', 'values', '__iter__':
            try:
                attr = getattr(obj, name)
            except AttributeError:
                pass
            else:
                for item in attr():
                    #yield from explore(item, memo)
                    for bar in explore(item, memo):
                        yield bar
Другие вопросы по тегам