gpt4 book ai didi

Python:内存中字符串的大小

转载 作者:IT老高 更新时间:2023-10-28 21:01:36 26 4
gpt4 key购买 nike

考虑以下代码:

arr = []
for (str, id, flag) in some_data:
arr.append((str, id, flag))

假设输入字符串平均长度为 2 个字符,最大为 5 个字符,并且 some_data 具有 100 万个元素。这种结构的内存要求是多少?

可能是因为字符串浪费了很多内存吗?如果是这样,我该如何避免呢?

最佳答案

在这种情况下,因为字符串很短,而且数量很多,所以使用 intern 可以节省相当多的内存。在琴弦上。假设字符串中只有小写字母,也就是 26 * 26 = 676 个可能的字符串,所以这个列表中肯定有很多重复; intern 将确保这些重复不会产生唯一的对象,而是都引用同一个基础对象。

有可能 Python 已经实习了短字符串;但是查看许多不同的来源,这似乎高度依赖于实现。所以在这种情况下调用 intern可能的方法; YMMV。

详细说明为什么这很可能节省内存,请考虑以下几点:

>>> sys.getsizeof('')
40
>>> sys.getsizeof('a')
41
>>> sys.getsizeof('ab')
42
>>> sys.getsizeof('abc')
43

将单个字符添加到字符串中只会增加一个字节到字符串本身的大小,但每个字符串本身会占用 40 个字节。

关于Python:内存中字符串的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9445201/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com