当前位置: 首页 > 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.gsyq.cn/news/1526804.html

相关文章:

  • 3分钟搞定浏览器资源嗅探:猫抓Cat-Catch让你的在线资源触手可及
  • 认准正规老字号!古籍拓片变现如何从源头杜绝仿冒套路、安心交易 - 深鉴新闻
  • 2026年6月市面上单级反渗透纯水设备厂家哪家靠谱推荐:工业净水系统、反渗透设备、纯水机、去离子水设备公司选择指南 - 海棠依旧大
  • OmenSuperHub:开源免费的惠普游戏本终极性能控制工具
  • 深耕东莞环保产业|武科环保打造研发 - 设计 - 施工 - 运维全链条一体化绿色治理标杆 - 广东科技观察
  • MPC8533E勘误文档深度解析:寄存器级编程避坑与实战指南
  • 沧州空调应急维修、线路故障排查,家电维修甄选指南2026年6月最新 - 金修达家庭维修
  • X1nput终极指南:一键解锁Xbox手柄完整震动体验
  • 2026排插什么牌子性价比高 实用选购参考 - 品牌排行榜
  • 2026成都林德伯格镜框授权指南:6家靠谱服务商横向对比与选购建议 - 优质品牌商家
  • 程序员职业规划:大模型时代如何重新设计路线:从踩坑到可复用方案
  • 洞察2026年当下浙江知名的聚合配送跑腿系统:如何借力聚合配送实现降本增效 - 品牌鉴赏官2026
  • 如何用MTKClient解锁联发科设备的真正潜力:从救砖到深度逆向的完整指南
  • 如何永久保存微信聊天记录:掌握个人数字记忆的完整解决方案
  • 烟台空调上门维修、线路老化检修,家电维修推荐指南2026年6月最新 - 金修达家庭维修
  • MPC852T嵌入式开发:DRAM与SDRAM配置优化与性能调优实战
  • VMware ESXi macOS解锁器:快速实现苹果系统虚拟化的终极解决方案
  • 专业级HTML5视频播放速率控制:Video Speed Controller终极指南
  • BilibiliDown:5分钟快速上手!打造你的专属B站视频资源库
  • 从原理到代码:用Python实现GIS坐标转换(四参数/七参数)的保姆级教程
  • 2026年贵阳包装材料选型指南:四川气泡膜与保温被供应商综合评估 - 优质品牌商家
  • 数术工坊第八卷:算力革命
  • 030华夏之光永存:国家级痛点破局,工业机器人用高精度RV减速器与谐波减速器
  • 3步掌握QQ音乐解析:轻松下载无损音乐与批量处理歌单
  • 广州考电工证机构排行:合规性与服务能力客观对比 - 互联网科技品牌测评
  • 寄快递省钱指南:什么快递最便宜?2026最新比价攻略 - 快递物流资讯
  • 2026 湛江空调维修 线路老化检修 家电故障抢修 本地精选机构 - 金修达家庭维修
  • JavaScript变量与数据类型详解
  • 开机后只有鼠标出现,如何解决电脑黑屏
  • 从ACE到ASIO再到libevent:一个老C++程序员的技术栈变迁与选型思考