【问题标题】:Guppy/Heapy on Windows with Python 2.7.6带有 Python 2.7.6 的 Windows 上的 Guppy/Heapy
【发布时间】:2014-11-21 11:50:37
【问题描述】:

我刚刚安装了 guppy 0.1.10。然后输入 Ipython 2.1.0

from guppy import hpy
hp = hpy()

使控制台崩溃,即 Windows 告诉我,python.exe 刚刚崩溃。有什么解决方法吗?还是有很多替代品?

【问题讨论】:

    标签: python windows guppy heapy


    【解决方案1】:

    我对 guppy/heapy 也有同样的问题。 Guppy 目前有点过时了。有某种补丁,但我再也找不到了。但是它在 python 2.7 中对我不起作用。由于操作系统架构(64 位!?),您也可能遇到问题。

    关于内存分析技术还有其他问题:

    我个人认为最有价值的选择是:

    计算对象的大小并自行跟踪也很有用。我详细阐述了我在 StackOverflow 问题之一 (Approximately how much memory would a list of 80000 items consume in python?) 中发现的一些代码(最初由 https://stackoverflow.com/users/216356/noctis-skytower 编写),以与 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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-09-07
      • 1970-01-01
      • 2015-05-24
      • 2015-02-18
      • 2015-03-13
      • 2014-12-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多