Python实现计算对象的内存大小示例

yipeiwu_com6年前Python基础

本文实例讲述了Python实现计算对象的内存大小。分享给大家供大家参考,具体如下:

一般的sys.getsizeof()显示不了复杂的字典。

查看类中的内容:

def dump(obj):
 for attr in dir(obj):#dir显示类的所有方法
  print(" obj.%s = %r" % (attr, getattr(obj, attr)))

这里用递归调用所有对象的getsizeof:

def get_size(obj, seen=None):
 # From https://goshippo.com/blog/measure-real-size-any-python-object/
 # Recursively finds size of objects
 size = sys.getsizeof(obj)
 if seen is None:
  seen = set()
 obj_id = id(obj)
 if obj_id in seen:
  return 0
# Important mark as seen *before* entering recursion to gracefully handle
 # self-referential objects
 seen.add(obj_id)
 if isinstance(obj, dict):
  size += sum([get_size(v, seen) for v in obj.values()])
  size += sum([get_size(k, seen) for k in obj.keys()])
 elif hasattr(obj, '__dict__'):
  size += get_size(obj.__dict__, seen)
 elif hasattr(obj, '__iter__') and not isinstance(obj, (str, bytes, bytearray)):
  size += sum([get_size(i, seen) for i in obj])
 return size

更多关于Python相关内容感兴趣的读者可查看本站专题:《Python进程与线程操作技巧总结》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总

希望本文所述对大家Python程序设计有所帮助。

相关文章

Python拼接字符串的7种方法总结

前言 忘了在哪看到一位编程大牛调侃,他说程序员每天就做两件事,其中之一就是处理字符串。相信不少同学会有同感。 在Python中,我们经常会遇到字符串的拼接问题,几乎任何一种编程语言,都把...

python获取文件路径、文件名、后缀名的实例

实例如下所示: #########start 获取文件路径、文件名、后缀名############ def jwkj_get_filePath_fileName_fileExt(fi...

python执行使用shell命令方法分享

1. os.system(shell_command) 直接在终端输出执行结果,返回执行状态0,1 此函数会启动子进程,在子进程中执行command,并返回command命令执行完毕后的...

浅谈django orm 优化

orm优化 1.数据库技术进行优化,包括给字段加索引,设置唯一性约束等等; 2.查询过滤工作在数据库语句中做,不要放在代码中完成(看情况); 3.如果要一次查询出集合的数量,使用c...

python实现百度关键词排名查询

就是一个简单的python查询百度关键词排名的函数,以下是一些简介:1、UA随机2、操作简单方便,直接getRank(关键词,域名)就可以了3、编码转化。编码方面应该没啥问题了。4、结果...