2014-09-26 8 views
5

Właśnie skończyłem gupik 0.1.10. Później wpisanie w Ipythonie 2.1.0Guppy/Heapy na Windowsie z Pythonem 2.7.6

from guppy import hpy 
hp = hpy() 

powoduje awarię konsoli, np. Windows informuje mnie, że python.exe właśnie się zawiesił. Czy istnieje jakieś obejście? Lub alternatywa heapy?

Odpowiedz

3

Miałem takie same problemy z gupik/heapy. Guppy jest obecnie nieco przestarzały. Jest jakaś łatka, ale nie mogę jej już znaleźć. Jednak to nie działało dla mnie w python 2.7. Możesz mieć również problemy z powodu łuku systemu operacyjnego (64-bitowe !?).

Istnieją inne pytania na temat technik pamięciowych profilowania:

ja osobiście uważam, że najbardziej wartościowe alternatywy są:

Jest przydatny także do obliczenia wielkości obiektami i śledzić go przez siebie. I opracowane niektóre kodu (pierwotnie przez https://stackoverflow.com/users/216356/noctis-skytower), które znalazłem w jednym z pytań stackoverflow (Approximately how much memory would a list of 80000 items consume in python?) za zgodne z Python 2.7 (powinien działać również w 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