当前位置:  开发笔记 > 编程语言 > 正文

找出Python中对象使用了多少内存

如何解决《找出Python中对象使用了多少内存》经验,为你挑选了3个好方法。

你将如何找出一个对象使用了多少内存?我知道有可能找出代码块使用了多少,但不是实例化对象(在其生命中的任何时间),这就是我想要的.



1> Uzer..:

试试这个:

sys.getsizeof(object)

如果对象由垃圾收集器管理,则getsizeof()调用对象的__sizeof__方法并添加额外的垃圾收集器开销.

递归食谱


不,它将返回指针的大小.
这个sys.getsizeof(对象)返回值是否包含真实对象大小而不是指针的大小,如上所述fserb?

2> fserb..:

找不到python对象的内存大小是没有简单的方法.你可能会发现的一个问题是Python对象 - 比如列表和dicts - 可能引用了其他python对象(在这种情况下,你的大小是什么?包含每个对象大小的大小?).有一些指针开销和与对象类型和垃圾收集相关的内部结构.最后,一些python对象具有非显而易见的行为.例如,列出大多数时间为更多对象预留空间; dicts甚至更复杂,因为它们可以以不同的方式操作(它们对于少量密钥具有不同的实现,并且有时它们超过分配条目).

有一大块代码(以及更新的大块代码)在那里试图最好地估计内存中python对象的大小.

您可能还想查看一些关于PyObject的旧描述(几乎所有python对象的内部C结构).


@culix:现在再次使用[Pympler](http://pythonhosted.org/Pympler/)模块.

3> drevicko..:

另一种方法是使用泡菜.请参阅此答案以获得此问题的副本.


这是一种非常明智的*和*简单的方法.
推荐阅读
云聪京初瑞子_617
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有