你将如何找出一个对象使用了多少内存?我知道有可能找出代码块使用了多少,但不是实例化对象(在其生命中的任何时间),这就是我想要的.
试试这个:
sys.getsizeof(object)
如果对象由垃圾收集器管理,则getsizeof()调用对象的__sizeof__
方法并添加额外的垃圾收集器开销.
递归食谱
找不到python对象的内存大小是没有简单的方法.你可能会发现的一个问题是Python对象 - 比如列表和dicts - 可能引用了其他python对象(在这种情况下,你的大小是什么?包含每个对象大小的大小?).有一些指针开销和与对象类型和垃圾收集相关的内部结构.最后,一些python对象具有非显而易见的行为.例如,列出大多数时间为更多对象预留空间; dicts甚至更复杂,因为它们可以以不同的方式操作(它们对于少量密钥具有不同的实现,并且有时它们超过分配条目).
有一大块代码(以及更新的大块代码)在那里试图最好地估计内存中python对象的大小.
您可能还想查看一些关于PyObject的旧描述(几乎所有python对象的内部C结构).
另一种方法是使用泡菜.请参阅此答案以获得此问题的副本.