news 2026/6/15 0:21:14

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
生成器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

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/15 0:15:06

数据分析转大模型:从报表到智能分析 Agent:从最小 Demo 到上线检查

《数据分析转大模型:从报表到智能分析 Agent》看起来是个大话题,但真落到项目里,常常就是几个具体选择。下面我尽量按实际开发时会遇到的问题来讲。摘要这篇面向希望升级为 AI 数据产品或智能分析开发的从业者,但不会把“数据分析…

作者头像 李华
网站建设 2026/6/15 0:14:02

OpenClaw从零部署实战:环境配置、安装部署与初始化避坑指南

OpenClaw的轻量化部署特性,让普通个人用户与企业开发者均可快速搭建专属本地AI智能体。相较于复杂的大模型私有化部署,OpenClaw部署门槛低、硬件要求低、适配设备广,支持Windows、Mac、Linux全系统,可运行在个人电脑、家用服务器、…

作者头像 李华
网站建设 2026/6/15 0:11:31

如何在电脑上流畅运行Switch游戏:Ryujinx模拟器终极配置指南

如何在电脑上流畅运行Switch游戏:Ryujinx模拟器终极配置指南 【免费下载链接】Ryujinx 用 C# 编写的实验性 Nintendo Switch 模拟器 项目地址: https://gitcode.com/GitHub_Trending/ry/Ryujinx 想在电脑上体验《塞尔达传说:旷野之息》的壮丽世界…

作者头像 李华
网站建设 2026/6/15 0:09:52

2012-2024年上市商业银行绿色信贷余额及绿色信贷占比

42家上市商业银行绿色信贷余额及绿色信贷占比2012-2024年面板数据数据年度:2012年-2024年1、数据来源各上市公司年报、可持续发展报告、社会责任报告,合计42家上市公司2、赠插值法填充一份,数据形式包含excel和dta3、因企业公布差异&#xff…

作者头像 李华
网站建设 2026/6/15 0:03:54

第八卷 大道归一录 · 番外·中篇 算力神朝黄昏篇

第八卷 大道归一录 番外中篇 算力神朝黄昏篇 作者:乖乖数学 完全敲定!就把算力神朝决战 PNPPNPPNP 真相揭露作为第八卷中段的核心大戏,承接七大天道 BOSS 战,层层递进推向最终归一,同时把算力规则、明暗数域对立、…

作者头像 李华
网站建设 2026/6/14 23:59:16

好客搜的文化内核——利他、专业、长期主义

好客搜的文化内核——利他、专业、长期主义 好客搜不仅是一家技术公司,更是一家有温度、有使命感的营销赋能平台。公司始终坚持“利他”文化,把客户和合作伙伴的成功放在首位。 在好客搜看来,真正的成功不是卖出多少套系统,而是…

作者头像 李华