legongju.com
我们一直在努力
2025-01-15 22:37 | 星期三

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

未经允许不得转载 » 本文链接:https://www.legongju.com/article/108838.html

相关推荐

  • Python中os函数重命名文件或目录的步骤

    Python中os函数重命名文件或目录的步骤

    在Python中,可以使用os.rename()函数来重命名文件或目录。下面是重命名文件或目录的步骤: 导入os模块:首先需要导入Python的os模块,这样才能使用os中的相关函...

  • 如何用Python的os函数修改文件权限

    如何用Python的os函数修改文件权限

    要使用Python的os模块来修改文件的权限,可以使用os.chmod()函数。以下是一个示例代码,演示如何使用os.chmod()函数修改文件的权限:
    import os # 文件路径...

  • Python os函数删除文件操作是什么样的

    Python os函数删除文件操作是什么样的

    在Python中,可以使用os模块提供的函数来删除文件。其中,常用的函数是os.remove()函数。该函数接受一个文件路径作为参数,用于删除指定路径的文件。
    示例代...

  • 在Python中利用os函数创建新目录的方法

    在Python中利用os函数创建新目录的方法

    在Python中,可以使用os模块中的os.mkdir()函数来创建新目录。下面是一个简单的示例:
    import os # 指定新目录的路径
    new_dir = 'path/to/new/directo...

  • sizeof函数在不同Python版本中的差异

    sizeof函数在不同Python版本中的差异

    sizeof 函数在 Python 中并不是一个内置函数,但我猜您可能是在谈论 sys.getsizeof() 函数 Python 2.x:
    在 Python 2.x 中,sys.getsizeof() 函数返回指定对...

  • Python中sizeof函数的返回值是否总是准确

    Python中sizeof函数的返回值是否总是准确

    在Python中,sys.getsizeof()函数用于获取对象所占用的内存字节数
    然而,这个大小并不包括对象引用的其他对象所占用的内存。例如,一个列表可能包含其他对象...

  • 如何在C++里使用strcasecmp函数

    如何在C++里使用strcasecmp函数

    strcasecmp 是一个 C 语言库函数,用于比较两个字符串,忽略大小写
    #include
    #include int main() { const char* str1 = "Hello, World!"; const char...

  • C++中strcasecmp如何比较字符串

    C++中strcasecmp如何比较字符串

    在 C++ 中,strcasecmp 函数用于比较两个字符串,忽略大小写的差异。这个函数是 POSIX 标准库函数,并非 C++ 标准库的一部分,所以在某些平台上可能无法使用。但...