当前位置: 首页 > news >正文

生成器generator:yield、生成器表达式、内存节省原理

博客导语

生成器是特殊迭代器,分为生成器函数、生成器表达式,是Python处理百万级海量数据的最优解。讲解yield暂停原理、return和yield区别、send()交互用法。


一、生成器函数(yield实现)

函数内部出现yield关键字,函数不再立即执行,返回生成器对象。执行逻辑:遇到yield暂停,保存上下文;下次next从暂停位置继续执行。

def gen_num(): yield 1 yield 2 yield 3 g = gen_num() print(next(g)) # 1 print(next(g)) # 2

二、内存节省底层原理

列表一次性把所有数据加载到堆内存;生成器只保存代码指针、上下文,不存储数据,调用next实时计算。100万条数据,列表占用80M,生成器仅占用128字节。


三、生成器表达式

语法:(i for i in range(10)) 和列表推导式仅括号区别,惰性迭代,不生成完整序列


四、yield send进阶用法

next只能取值,send可以向生成器内部传递数据,实现双向交互,多用于协程底层。


使用场景

超大日志读取、批量文件解析、爬虫批量请求,避免内存溢出OOM

http://www.jsqmd.com/news/1014984/

相关文章:

  • 尼康相机推荐哪个品牌的卡 - 资讯速览
  • 3分钟搞定浏览器资源嗅探:猫抓Cat-Catch让你的在线资源触手可及
  • 使用e-tree开发树形穿梭框
  • Windows 11右键菜单自定义指南:3步打造你的专属高效工作流
  • 2026年中山专利申请与无效律师哪家好?5位实战专家推荐 - 本地品牌推荐
  • 认准正规老字号!古籍拓片变现如何从源头杜绝仿冒套路、安心交易 - 深鉴新闻
  • Java 转大模型开发:后端程序员的升级路线:从踩坑到可复用方案
  • 2026 盐城空调维修 线路老化排查 家电上门抢修 本地口碑推荐 - 金修达家庭维修
  • 2026年6月市面上单级反渗透纯水设备厂家哪家靠谱推荐:工业净水系统、反渗透设备、纯水机、去离子水设备公司选择指南 - 海棠依旧大
  • OmenSuperHub:开源免费的惠普游戏本终极性能控制工具
  • 深耕东莞环保产业|武科环保打造研发 - 设计 - 施工 - 运维全链条一体化绿色治理标杆 - 广东科技观察
  • 邵阳空调专业维修、线路隐患排查,家电维修优选指南2026年6月最新 - 金修达家庭维修
  • SAP与国产ERP:三层本质差异 - 智慧园区
  • 2026年中西安家庭防水补漏指南:沣东靠谱的家里渗水修补电话与专业服务商解析 - 品牌鉴赏官2026
  • MPC8533E勘误文档深度解析:寄存器级编程避坑与实战指南
  • java:Math类
  • 深蓝词库转换:打破20+输入法壁垒的技术架构深度解析
  • 从手动刷本到智能托管:ok-ww如何用3000行Python代码重构《鸣潮》自动化体验
  • 2026年江苏新房装修怎么选?多维度横评南京本土装修公司,附真实案例与避坑指南 - 优质品牌商家
  • LangChain 实战指南:从调用模型到构建 AI 应用:一次项目复盘里的真实取舍
  • 闭包概念、特性、使用场景与注意事项
  • 2026年哈尔滨茅台酒回收靠谱渠道怎么选?实测7家实体店真实体验与避坑指南 - 优质品牌商家
  • 国内大容量商用消毒柜厂家实力排行及实测对比 - 互联网科技品牌测评
  • 沧州空调应急维修、线路故障排查,家电维修甄选指南2026年6月最新 - 金修达家庭维修
  • 低代码平台的 AI 逻辑编排:从自然语言到业务流程的工程化方案
  • 保姆级教程:用ENVI+Erdas从Landsat数据反演地表温度(附完整模型与避坑指南)
  • 2026排插什么牌子性价比高 实用选购参考 - 品牌排行榜
  • X1nput终极指南:一键解锁Xbox手柄完整震动体验
  • 数据分析转大模型:从报表到智能分析 Agent:从最小 Demo 到上线检查
  • 2026成都林德伯格镜框授权指南:6家靠谱服务商横向对比与选购建议 - 优质品牌商家