我刚投了0.1.10。然后在Ipython 2.1.0中输入
from guppy import hpy
hp = hpy()使控制台崩溃,即windows告诉我,python.exe刚刚崩溃。有什么解决办法吗?还是其他的选择?
发布于 2015-04-16 09:45:07
我和格皮/海皮也有过同样的问题。格皮现在有点过时了。有某种补丁,但我再也找不到了。然而,在python2.7中,它并不适用于我。您也可以有问题,因为操作系统的arch (64位!?)。
还有关于内存分析技术的其他问题:
我个人认为最有价值的选择是:
计算对象的大小并自己跟踪它也很有用。我详细阐述了一些代码(最初是由https://stackoverflow.com/users/216356/noctis-skytower编写的),我在其中一个StackOverflow问题(Approximately how much memory would a list of 80000 items consume in python?)中发现这些代码与Python2.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 barhttps://stackoverflow.com/questions/26060045
复制相似问题