当前位置: 代码迷 >> python >> Python字典并设置内存分配
  详细解决方案

Python字典并设置内存分配

热度:108   发布时间:2023-06-20 19:24:42.0

我找到了讨论python字典和集合的内存使用情况的 ,特别是:

默认情况下,字典或集合的最小大小为8(也就是说,如果您只讲故事3个值,python仍将分配8个元素)。 调整大小时,存储桶数增加4倍,直到达到50,000个元素,此后大小增加2倍。 这提供了以下可能的尺寸,

16,64,256,1024,4096,16384,65536,131072,262144,...

重要的是要注意,调整大小可能会使哈希表变大或变小。 也就是说,如果删除了哈希表中足够多的元素,则可以按比例缩小该表的大小。 这是因为考虑到表已满2 / 3rd,所以使用了自上次调整大小以来插入和删除的条目的总数。 但是,调整大小仅在插入期间发生。

但这本书于2014年9月发布,因此可能在此之前写了一段时间。 在最新版本的Python中,这仍然准确且相关吗? (3.6+)

在CPython中,这不再成立。 自从编写了这种情况以来,字典实现的这一特定部分已经更改了两次。 在上方GROWTH_FACTOR定义上方的GROWTH_FACTOR给出了一些历史记录。

/* GROWTH_RATE. Growth rate upon hitting maximum load.
 * Currently set to used*3.
 * This means that dicts double in size when growing without deletions,
 * but have more head room when the number of deletions is on a par with the
 * number of insertions.  See also bpo-17563 and bpo-33205.
 *
 * GROWTH_RATE was set to used*4 up to version 3.2.
 * GROWTH_RATE was set to used*2 in version 3.3.0
 * GROWTH_RATE was set to used*2 + capacity/2 in 3.4.0-3.6.0.
 */

该书提供的信息在出版时已经过时了大约两年。