117.info
人生若只如初见

Python中sizeof函数对不同类型对象的计算方式

在 Python 中,没有名为 sizeof 的内置函数。但是,您可以使用 sys.getsizeof() 函数来获取一个对象(如字符串、列表或字典)所占用的内存大小(以字节为单位)。

sys.getsizeof() 函数只返回对象本身所占用的内存大小,而不包括其子对象(例如,列表中的元素或字典中的键和值)所占用的内存。要计算一个对象及其所有子对象所占用的总内存大小,您需要编写一个递归函数。

以下是一个示例,展示了如何使用 sys.getsizeof() 函数计算不同类型对象的内存大小:

import sys def get_total_sizeof(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, (list, tuple, set, frozenset)): size += sum(get_total_sizeof(x, seen) for x in obj) elif isinstance(obj, dict): size += sum(get_total_sizeof(k, seen) + get_total_sizeof(v, seen) for k, v in obj.items()) elif hasattr(obj, '__dict__'): size += get_total_sizeof(obj.__dict__, seen) elif hasattr(obj, '__iter__') and not isinstance(obj, (str, bytes, bytearray)): size += sum(get_total_sizeof(i, seen) for i in obj) return size # 示例 string = "Hello, world!" list_obj = [1, 2, 3, 4, 5] dict_obj = {'a': 1, 'b': 2, 'c': 3} print("String memory size:", get_total_sizeof(string)) print("List memory size:", get_total_sizeof(list_obj)) print("Dictionary memory size:", get_total_sizeof(dict_obj)) 

请注意,这个示例中的 get_total_sizeof() 函数会递归地计算对象及其子对象所占用的内存大小。这可能会导致重复计算相同的子对象,因此我们使用 seen 集合来跟踪已经计算过的对象。

未经允许不得转载 » 本文链接:https://www.117.info/ask/fe9c1AzsBBAJQBQ.html

推荐文章

  • linux的python如何进行进程管理

    在Linux中,可以使用Python的内置库os和subprocess进行进程管理 使用os.system()执行外部命令: import os # 执行外部命令,例如:ls
    os.system("ls") 使用...

  • linux的python怎样进行系统调用

    在Linux中,Python可以通过os和sys库进行系统调用 使用os库: os库提供了许多与操作系统交互的函数。例如,要使用os.system()执行系统命令,可以这样做:
    i...

  • python中set怎样进行集合排序

    在Python中,可以使用sorted()函数对集合(set)进行排序。sorted()函数返回一个排序后的列表(list),而不是集合,因为集合本身是无序的。以下是一个示例:

  • python中set如何进行集合转换

    在Python中,可以使用集合(set)的内置方法进行集合转换。以下是一些常用的集合转换方法: 将列表转换为集合: my_list = [1, 2, 3, 4, 5]
    my_set = set(m...

  • sizeof函数在Python中的使用场景有哪些

    sizeof 函数在 Python 中并不是内置函数,但我们可以通过 sys.getsizeof() 函数来获取对象所占用的内存大小。以下是一些使用场景: 分析内存占用:在性能优化和资...

  • 如何在Python中使用sizeof函数获取对象大小

    在 Python 中,可以使用 sys.getsizeof() 函数来获取一个对象的大小(以字节为单位)。这个函数返回指定对象(参数可以是一个变量名或者一个值)在内存中所占的字...

  • Python中sizeof函数的作用是什么

    在Python中,sizeof()函数并不是内置函数。可能你是想要提到sys.getsizeof()函数,它用于获取Python对象(如列表、字典等)所占用的内存大小(以字节为单位)。<...

  • Java中sorted()函数的异常处理策略

    在Java中,sorted()函数是用于对集合进行排序的。当使用sorted()函数时,可能会遇到一些异常情况,例如:元素不可比较、比较器为null等。为了处理这些异常,可以...