gpt4 book ai didi

Python 大变量 RAM 使用情况

转载 作者:IT王子 更新时间:2023-10-28 23:33:51 24 4
gpt4 key购买 nike

假设有一个 dict 变量在运行时变得非常大 - 多达数百万个键:值对。

此变量是否存储在 RAM 中,从而有效地使用了所有可用内存并减慢了系统的其余部分?

要求解释器显示整个字典是个坏主意,但只要一次访问一个键就可以了吗?

最佳答案

是的,字典将存储在进程内存中。因此,如果它变得足够大以至于系统 RAM 中没有足够的空间,那么随着系统开始在磁盘之间交换内存,您可能会看到速度大幅下降。

其他人说几百万件不应该造成问题;我不确定。 dict 开销本身(在计算键和值占用的内存之前)很重要。对于 Python 2.6 或更高版本,sys.getsizeof提供了一些关于各种 Python 结构占用多少 RAM 的有用信息。一些快速的结果,来自 64 位 OS X 机器上的 Python 2.6:

>>> from sys import getsizeof
>>> getsizeof(dict((n, 0) for n in range(5462)))/5462.
144.03368729403149
>>> getsizeof(dict((n, 0) for n in range(5461)))/5461.
36.053470060428495

因此,在这台机器上,字典开销在每项 36 字节和每项 144 字节之间变化(确切值取决于字典的内部哈希表的完整程度;这里 5461 = 2**14//3 是其中之一内部哈希表被放大的阈值)。那是在为 dict 项目本身添加开销之前;如果它们都是短字符串(例如 6 个字符或更少),那么每个项目仍然会增加 >= 80 个字节(如果许多不同的键共享相同的值,则可能会更少)。

因此,在一台典型的机器上耗尽内存不会需要 几百万个 dict 项。

关于Python 大变量 RAM 使用情况,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2670005/

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