云服务器免费试用

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

服务器知识 0 234

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

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及其引用对象所占用的内存大小(单位为字节)。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942@qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Python中sizeof函数的最佳实践是什么
本文地址: https://solustack.com/170716.html

相关推荐:

网友留言:

我要评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。