Python字典和集合内存分配

2024-01-08

I found 这个优秀的资源 https://www.safaribooksonline.com/library/view/high-performance-python/9781449361747/ch04.html讨论 python 字典和集合的内存使用情况,具体来说:

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

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

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

但这篇文章发表于 2014 年 9 月,因此很可能是在此之前的某个时间写的。这在最新版本的 Python 中仍然准确且相关吗? (3.6+)


在 CPython 中,情况不再如此。自从那里写的内容以来,字典实现的这个特定部分已经改变了几次。评论开始于这条线 https://github.com/python/cpython/blob/e42b705188271da108de42b55d9344642170aa2b/Objects/dictobject.c#L398就在定义之上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.
 */

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python字典和集合内存分配 的相关文章

  • 出现导入错误:无法从“随机”导入名称“随机”[重复]

    这个问题在这里已经有答案了 我在我的计算机上多次运行我的代码 但没有出现此错误 但突然间这个来了 File e Python 3 8 0 lib site packages comtypes client code cache py lin
  • Python 将列表中的字符串转换为数字

    我遇到了以下错误消息 以 10 为基数的 int 的文字无效 2 2 外部用单引号括起来 内部用双引号括起来 该数据位于primes列出使用print primes 0 样本数据在primes list 2 3 5 7 The primes
  • 对 Python DataFrame 进行子集化

    我正在从 R 过渡到 Python 我刚刚开始使用 Pandas 我有一个可以很好地子集化的 R 代码 k1 lt subset data Product p id Month lt mn Year yr select c Time Pro
  • Python 按文件夹模块导入

    我有一个目录结构 example py templates init py a py b py a py and b py只有一个类 名称与文件相同 因为它们是猎豹模板 纯粹出于风格原因 我希望能够在中导入和使用这些类example py像
  • 如何在 pygame 中聚焦光线或如何仅绘制窗口的某些圆形部分?

    对于这一点 如果您熟悉它 请想想 超级马里奥制造2 中嘘关卡中的黑暗模式 我试图在角色周围创建一个圆形聚光灯 这也将使圆圈范围内的任何内容都可见 例如部分站在地板上 敌人或场景中的任何其他物体 我的计划是首先绘制圆圈 聚光灯 然后绘制场景
  • 肥皂服务的良好框架是什么?

    我正在寻找一个用于肥皂的好框架service 我更喜欢使用Pythonic框架 但是在查看了soaplib rpclib 太不稳定 SOAPy 不适用于2 7 和ZSI 太 令人困惑 之后 我不确定这是否可能 我对使用另一种语言感到满意 尽
  • Python MySQL 模块

    我正在开发一个需要与 MySQL 数据库交互的 Web 应用程序 但我似乎找不到任何真正适合 Python 的模块 我特别寻找快速模块 能够处理数十万个连接 和查询 所有这些都在短时间内完成 而不会对速度产生重大影响 我想我的答案将是游戏领
  • 将列表传递给 PyCrypto 中的 AES 密钥生成器

    我尝试使用 Pycrypto 生成 AES 密钥 但收到以下错误 类型错误 列表 不支持缓冲区接口 对于以下声明 aescipher AES new mykey AES MODE ECB mykey 属于类型list并包含 18854347
  • 更改Python pylab玫瑰/极坐标图中图例标题的字体大小

    我正在尝试更改玫瑰图或 极地 图上现有图例标题的字体大小 大部分代码是由不在的其他人编写的 我已经添加 ax legend title legend title setp l get title fontsize 8 添加标题 legend
  • 我要恢复我的记忆!我怎样才能真正处理一个控件?

    我正在制作一个应用程序 它创建大量的窗口控件 按钮和标签等 它们都是通过函数动态生成的 我遇到的问题是 当我删除控件并处置它们时 它们不会从内存中删除 void loadALoadOfStuff while tabControlToClea
  • 图像堆栈的最大强度投影

    我正在尝试重新创建该功能 max array 3 来自 MatLab 它可以获取 N 个图像的 300x300px 图像堆栈 我在这里说 图像 因为我正在处理图像 实际上这只是一个大的双数组 300x300xN 并创建一个 300x300
  • 在 (i)python 脚本中从 jupyter 内核获取输出

    我想从单个 ipython 会话中打开多个内核 在这些内核上运行代码 然后收集结果 但我不知道如何收集结果 甚至不知道如何查看 stdout stderr 我怎样才能做这些事情呢 到目前为止我所得到的 我已经使用如下代码管理了前两个步骤 打
  • 如何在树莓派上更新到最新的 python 3.5.1 版本?

    我昨天拿到了 Raspberry Pi 我已经在尝试用它来编写代码了 我有一个计划在其上运行的程序 但它仅与 Python 版本 3 5 0 或 3 5 1 兼容 并且我在互联网上找到的所有内容似乎都已经过时 与 Python 2 有关 或
  • 尝试修复我的功能

    我正在开发一个函数 我必须返回一个元组 其中第一个参数是最大数字的 str 第二个参数是 int 列表 这是示例以及我为该函数编写的内容 投票 G G N G C G 1 3 0 1 您必须将最大值的位置映射到正确的一方 parties N
  • 仅对某些行的不同大小的两个 pandas 数据帧的列进行求和

    我有两个 pandas 数据框 如下所示 df1 n column1 0 5 0 0 0 1 6 0 0 0 2 7 0 0 0 3 8 0 0 0 4 9 0 0 0 5 10 0 0 0 df2 n column2 0 6 0 1 0
  • Python 类方法的示例用例是什么?

    我读了Python 中的类方法有什么用 https stackoverflow com questions 38238 what are class methods in python for但那篇文章中的例子很复杂 我正在寻找 Pytho
  • sklearn 中带有词袋和附加情感特征的文本分类器

    我正在尝试构建一个分类器 除了词袋之外 还使用情绪或主题 LDA 结果 等特征 我有一个包含文本和标签的 pandas DataFrame 并且想添加情感值 5 到 5 之间的数字 和 LDA 分析结果 带有句子主题的字符串 我有一个工作词
  • 使用 Pandas 和 Group By 绘制堆叠直方图

    我正在使用如下所示的数据集 Gender Height Width Male 23 4 4 4 Female 45 4 4 5 我想可视化高度和宽度的堆叠直方图 我希望每个图有两个堆叠的直方图 每个性别一个 这是文档中的堆叠直方图 如果存在
  • 在 python 中使用递归替代 len()

    作为 CS1301 问题的一部分 我正在尝试使用递归编写一个函数 该函数将执行与 len 完全相同的操作 但是 我有两个问题 我正在使用全局变量 但我在课程中还没有学到这一点 cs1301 自动评分器告诉我 我的函数返回 26 而不是 13
  • Python pip 安装错误 [SSL: CERTIFICATE_VERIFY_FAILED]

    我已经尝试解决这个问题有一段时间了 由于某种原因 我陷入了 ssl 问题 并且不知道发生了什么 问题 我已经安装了 python2 7 和 easy install2 7 但是当尝试使用 easy install2 7 安装 pip 时 出

随机推荐

  • 在特定条件下获取行以交换表

    我目前有一个父表 CREATE TABLE members member id SERIAL NOT NULL UNIQUE PRIMARY KEY first name varchar 20 last name varchar 20 ad
  • 检测显示器是否关闭

    我有一个信息亭类型的应用程序 如果液晶电视关闭 我需要收到通知 以便我可以惩罚某人 我正在运行带有 nVidia 显卡和 nVidia 驱动程序的 Ubuntu 10 10 电视通过 HDMI 插入 我看过了nvidia settings
  • Visual Studio Code 中的 JSON 文件错误:预期逗号 json(514)

    我在使用 Visual Studio Code 时遇到了一个奇怪的问题 我的以下 JSON 文件有问题 attribute numeroConta operator value 0030152201 问题被指责为 值 在第二个数字零 问题如
  • OnClientClick 不适用于 asp.net LinkBut​​ton

    我有一个asp netlinkbutton 其中包含OnClientClick属性 但是函数内OnClientClick永远不会被调用 它直接跳转到OnClick功能 以下是我使用 LinkBut ton 的两种方式
  • CSS3 Border-Radius 的一个边框颜色不同,正在渗色

    我有一个使用边框半径的带有圆角的流体宽度 div 以及 div 一侧颜色不同的大边框 当浏览器窗口足够小时 边框都会按其应有的方式运行 然而 当我放大窗口尺寸时 我开始看到 div 中心的颜色渗出 我想知道是否有人知道可能的解决方案 div
  • Android 以编程方式安装 apk 错误 - 包解析错误

    我在我的页面上创建一个 Edittext 以允许用户通过下载 apk 并安装来更新应用程序 我正在使用 loojp 库来处理异步任务 我的活动代码 f0textupdate setOnClickListener new View OnCli
  • 快速移动鼠标时不会触发 OnMouseOut 事件(GWT - 所有浏览器)

    我有一个代表蓝色矩形的 DIV 其中包含文本 HELLO 当用户单击它时 它的颜色更改为红色和文本 BYE 当用户将鼠标光标移出时 恢复其原始颜色和文本 这些样式在 CSS 中描述 文本由 GWT 事件控制 请参见下面的 Java 代码 问
  • Python 中具有特定方差的随机数

    在 Python 程序中 我需要生成具有特定的 用户控制的方差的正态分布随机数 我怎样才能做到这一点 Use random normalvariate http docs python org library random html ran
  • 从 Angular 前端调用 Azure AD 安全 Web API

    我目前正在开发一个 Angular 前端 它使用 MSAL 来对用户进行身份验证 该前端应调用 Web API 也托管在 Azure 中 该 API 由 Azure Active Directory 保护 虽然我轻松地设法使用 Angula
  • 如何停止 SwingWorker?

    我怎样才能阻止SwingWorker做他的工作吗 我知道有cancel 方法 但我最多能做的就是匿名创建一个新的SwingWorker这就是工作 这是供参考的代码 public void mostrarResultado final Res
  • .Net Core 3 Worker 集成测试

    对于集成测试 Asp Net Core 应用程序 我们有Web应用程序工厂 https learn microsoft com en us aspnet core test integration tests view aspnetcore
  • 使用 JNDI 获取 DNS SRV 记录

    我正在尝试使用 JNDI 从 DNS 服务器获取 SRV 记录 Hashtable
  • 哪个更好? Qt Creator 或 Visual Studio IDE [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我目前在我的 Qt 应用程序中使用 Qt Creator 1 3 我知道它使用jom for make当我们拥有多核处理器时 这一步会更好 但除
  • Twig 标签包含与函数包含

    Twig 的文档标签包括 http twig symfony com doc tags include html看起来非常相似功能包括 http twig symfony com doc functions include html 标签包
  • 如何从java中的JSON文件中删除键值对

    我想知道是否有人可以帮助我或提示我如何用 Java 编辑附加的虚拟 JSON 文件 正如您所看到的 我有一个头对象 其中包含许多遵循相同模式的值和子对象 我想知道是否有办法删除所有值为 1的键 以下是我根据许多网站使用的尝试jackson
  • 根据javascript中的文本行数更改文本区域的高度[重复]

    这个问题在这里已经有答案了 可能的重复 使用原型自动调整文本区域大小 https stackoverflow com questions 7477 autosizing textarea using prototype 如何根据用户放入文本
  • JWT 不记名令牌流程

    我想要的是 ASP NET Core 中 JWT 生成和 JWT 消耗的方法 没有 OAuth2 流程 我确实有 IdentityServerv3 与 OAuth2 配合使用 但当我拥有双方时 对于访问 API 的单个应用程序来说 这有点过
  • Slick Slider slickGoTo 方法打破轮播

    我正在开发一个新闻文章页面 该页面也有一个图像库 我在用着光滑的滑块 http kenwheeler github io slick 用于画廊上的缩略图 图库中的每张图片都有自己的网址 用于广告查看目的 不太好 但我对此无能为力 例如 ou
  • 如何在flutter中定义自定义文本主题?

    如何制作自己的文字主题风格 我只找到这样的默认文本主题 但这还不够 textTheme TextTheme body1 TextStyle body2 TextStyle button TextStyle caption TextStyle
  • Python字典和集合内存分配

    I found 这个优秀的资源 https www safaribooksonline com library view high performance python 9781449361747 ch04 html讨论 python 字典