import sys
# These are the usual ipython objects, including this one you are creating
ipython_vars = ['In', 'Out', 'exit', 'quit', 'get_ipython', 'ipython_vars']
# Get a sorted list of the objects and their sizes
sorted([(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)
1条答案
按热度按时间2g32fytz1#
假设你使用的是
ipython
或者jupyter
,你需要做一些工作来得到你***定义的所有对象的列表。这意味着获取globals()
中所有可用的对象,并过滤掉modules
,builtins
,ipython objects
等对象。一旦你确定你有了这些对象,然后可以使用sys.getsizeof
获取它们的大小,总结如下:请记住,对于python对象(那些用python内置函数创建的对象),
sys.getsizeof
是非常精确的。但是对于用第三方库创建的对象,它可能有点不精确。此外,请注意,如果对象是由垃圾收集器管理的,sys.getsizeof
会增加额外的垃圾收集器开销。所以,有些东西看起来可能比实际要重一些。顺便说一句,
numpy
的.nbytes
方法可能有点误导,因为它不包括数组对象的非元素属性所消耗的内存。