Python中sizeof函数的最佳实践是什么

avatar
作者
猴君
阅读量:0

在Python中,没有内置的sizeof函数来直接获取对象占用的内存大小

import sys  def get_size(obj, seen=None):     if seen is None:         seen = set()     obj_id = id(obj)     if obj_id in seen:         return 0     seen.add(obj_id)      size = sys.getsizeof(obj)      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 

这个函数可以递归地计算对象及其所有引用对象的内存大小。请注意,这个函数并不完美,可能会产生一些误差,因为它无法处理某些特殊类型的对象,如自定义类或C扩展。然而,在大多数情况下,它应该足够好用。

使用示例:

my_list = [1, 2, 3, "hello", {"key": "value"}] size = get_size(my_list) print(f"Size of my_list: {size} bytes") 

这将输出my_list及其引用对象所占用的内存大小(单位为字节)。

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!