
假设你正在使用
ipython或者
jupyter,你需要做的工作一点点地得到一个列表中的所有对象的 你
已经定义。这意味着要提供一切
globals()和剔除这些对象
modules,
builtins,
ipythonobjects,等等。一旦你确定你有这些对象,那么你就可以继续与抢夺它们的大小
sys.getsizeof。可以总结如下:
import sys# These are the usual ipython objects, including this one you are creatingipython_vars = ['In', 'Out', 'exit', 'quit', 'get_ipython', 'ipython_vars']# Get a sorted list of the objects and their sizessorted([(x, sys.getsizeof(globals().get(x))) for x in dir() if not x.startswith('_') and x not in sys.modules and x not in ipython_vars], key=lambda x: x[1], reverse=True)请记住,对于python对象(使用python的内置函数创建的对象),
sys.getsizeof将非常准确。但是使用第三方库创建的对象可能有点不准确。此外,请注意,
sys.getsizeof如果对象由垃圾收集器管理,则会增加额外的垃圾收集器开销。因此,某些事情看起来可能比实际的要重。
附带说明一下,
numpy的
.nbytes方法可能会引起误解,因为它不包括数组对象的非元素属性消耗的内存。
我希望这有帮助。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)