2014-09-26 2 views
5

Я просто запомнил гуппи 0.1.10. Затем, набрав в IPython 2.1.0Guppy/Heapy на Windows с Python 2.7.6

from guppy import hpy 
hp = hpy() 

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

ответ

3

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

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

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

Полезно также для расчета размера ваших объектов и отслеживать его самостоятельно. Я разработал код (первоначально https://stackoverflow.com/users/216356/noctis-skytower), что я нашел в одном из StackOverflow вопросов (Approximately how much memory would a list of 80000 items consume in 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 
Смежные вопросы