Python 生成器与惰性求值:让内存占用降一个数量级(1023)

举报
yd_275671240 发表于 2026/10/23 16:10:04 2026/10/23
【摘要】 生成器与惰性求值实践笔记:逐行读取大文件、生成器表达式与内存对比。

处理大文件或大集合时,先把所有数据加载进列表往往是不必要的。Python 的生成器提供了一种惰性求值的方式,只在需要时才产出下一个值。

基本用法

def read_large(path):
    with open(path, encoding="utf-8") as f:
        for line in f:
            yield line.strip()

# 逐行处理,内存占用恒定
total = sum(len(line) for line in read_large("big.log"))

生成器表达式

与列表推导式相比,把方括号换成圆括号即可得到生成器:(x*x for x in range(10**8)) 不会立即分配 8 千万个元素的内存。

注意事项

生成器只能遍历一次;需要多次遍历时可用 itertools.tee 或转成列表。合理使用生成器,是编写高吞吐数据处理管道的基础。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。