0

0

Python大文件读取策略_内存优化说明【指导】

冷漠man

冷漠man

发布时间:2026-01-05 19:54:08

|

309人浏览过

|

来源于php中文网

原创

读大文件应分块读、边读边处理以控制内存:按行读适合文本,用for line in f;分块读适合二进制,用f.read(chunk_size);mmap适合随机访问;生成器封装提升复用性;注意及时关闭文件、清理对象并监控内存。

python大文件读取策略_内存优化说明【指导】

读大文件时别一次性 read(),内存会爆。核心思路是“分块读、边读边处理”,让内存占用稳定在可控范围。

按行读取:适合文本日志、CSV等逐行可处理的场景

for line in f: 最省内存,Python 内部做了缓冲优化,不会把整文件加载进内存。

  • 确保文件以文本模式打开(encoding 指定编码,避免解码错误)
  • 遇到超长行(如单行几百MB)要加保护,可用 f.readline(max_bytes) 限制单行长度
  • 若需跳过头部或按条件过滤,直接在循环里 continuebreak,不额外存中间数据

分块读取:适合二进制文件、固定格式或需自定义解析的场景

f.read(chunk_size) 手动控制每次读多少字节,典型 chunk_size 取 8192(8KB)到 65536(64KB)之间较均衡。

  • 太小(如 1B)会导致系统调用频繁,IO 效率低
  • 太大(如 100MB)失去内存控制意义,接近全读
  • 读取后立即处理或写入,处理完清空变量(如 chunk = None),帮助 GC 回收

内存映射(mmap):适合随机访问、重复读同一区域的大文件

mmap 把文件“映射”成内存地址空间,操作系统按需加载页,不占 Python 堆内存。

Transor
Transor

专业的AI翻译工具,支持网页、字幕、PDF、图片实时翻译

下载

立即学习Python免费学习笔记(深入)”;

  • 适用于数据库文件、大型索引、图像头信息提取等场景
  • 注意 Windows 下 mmap 对打开模式敏感(需 r+copy_on_write 配置)
  • 不要对 mmap 对象做 list()str() 全转,会触发全加载

用生成器封装逻辑:提升复用性与可读性

把读取+解析逻辑封装成生成器函数,调用方按需迭代,语义清晰且天然流式。

  • 例如:def read_csv_chunks(path, chunk_size=1000): 每次 yield 一个 DataFrame 分块
  • 生成器内部用 csv.reader 配合 itertools.islice 控制行数,比 pandas 的 chunksize 更轻量
  • 异常处理放在生成器内(如某块编码失败,可记录并跳过,不影响后续)

不复杂但容易忽略:关闭文件、及时 del 大对象、监控 psutil.Process().memory_info().rss 看实际内存走势,比理论更可靠。

相关专题

更多
python开发工具
python开发工具

php中文网为大家提供各种python开发工具,好的开发工具,可帮助开发者攻克编程学习中的基础障碍,理解每一行源代码在程序执行时在计算机中的过程。php中文网还为大家带来python相关课程以及相关文章等内容,供大家免费下载使用。

734

2023.06.15

python打包成可执行文件
python打包成可执行文件

本专题为大家带来python打包成可执行文件相关的文章,大家可以免费的下载体验。

631

2023.07.20

python能做什么
python能做什么

python能做的有:可用于开发基于控制台的应用程序、多媒体部分开发、用于开发基于Web的应用程序、使用python处理数据、系统编程等等。本专题为大家提供python相关的各种文章、以及下载和课程。

752

2023.07.25

format在python中的用法
format在python中的用法

Python中的format是一种字符串格式化方法,用于将变量或值插入到字符串中的占位符位置。通过format方法,我们可以动态地构建字符串,使其包含不同值。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

617

2023.07.31

python教程
python教程

Python已成为一门网红语言,即使是在非编程开发者当中,也掀起了一股学习的热潮。本专题为大家带来python教程的相关文章,大家可以免费体验学习。

1258

2023.08.03

python环境变量的配置
python环境变量的配置

Python是一种流行的编程语言,被广泛用于软件开发、数据分析和科学计算等领域。在安装Python之后,我们需要配置环境变量,以便在任何位置都能够访问Python的可执行文件。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

547

2023.08.04

python eval
python eval

eval函数是Python中一个非常强大的函数,它可以将字符串作为Python代码进行执行,实现动态编程的效果。然而,由于其潜在的安全风险和性能问题,需要谨慎使用。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

577

2023.08.04

scratch和python区别
scratch和python区别

scratch和python的区别:1、scratch是一种专为初学者设计的图形化编程语言,python是一种文本编程语言;2、scratch使用的是基于积木的编程语法,python采用更加传统的文本编程语法等等。本专题为大家提供scratch和python相关的文章、下载、课程内容,供大家免费下载体验。

705

2023.08.11

漫蛙2入口地址合集
漫蛙2入口地址合集

本专题整合了漫蛙2入口汇总,阅读专题下面的文章了解更多详细内容。

159

2026.01.06

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
最新Python教程 从入门到精通
最新Python教程 从入门到精通

共4课时 | 0.6万人学习

Django 教程
Django 教程

共28课时 | 2.8万人学习

SciPy 教程
SciPy 教程

共10课时 | 1万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号