Find out how much memory is being used by an object in Python本问题已经有最佳答案,请猛点这里访问。
你将如何找出一个对象使用了多少内存?我知道有可能知道一块代码使用了多少,但不知道一个实例化对象(在其生命周期中的任何时候)使用了多少,这正是我想要的。 要找出一个python对象的内存大小是不容易的。您可能会发现的一个问题是,python对象(如list和dict)可能引用了其他的python对象(在本例中,您的大小是多少)?是否包含每个对象的大小?)。存在一些与对象类型和垃圾收集相关的指针开销和内部结构。最后,一些Python对象具有不明显的行为。例如,在大多数情况下,列表为更多对象预留空间;dict甚至更复杂,因为它们可以以不同的方式操作(它们对少量键有不同的实现,有时它们会过度分配条目)。 这里有一大块代码(以及一大块更新后的代码),以尽量接近内存中Python对象的大小。 您可能还需要检查关于pyobject(实际上表示所有python对象的内部C结构)的一些旧描述。 试试这个:
getsizeof()调用对象的 递归配方 另一种方法是使用泡菜。请参阅此问题副本的答案。 我对以下任何一项都没有任何个人经验,但只需简单搜索"python[内存]分析器"即可:
希望有帮助。 必须小心使用,因为对象的覆盖可能会误导用户。 使用bregman.suite,一些使用sys.getsizeof的测试将对象实例中数组对象(数据)的副本输出为大于对象本身(mfcc)。
对于大的物体,你可以使用一些粗糙但有效的方法:检查您的python进程在系统中占用了多少内存,然后删除该对象并进行比较。 这个方法有很多缺点,但它会给你一个非常大的物体非常快速的估计。 |