Python读取2.9G大文件性能对比:四种方法耗时与内存分析

江屿
江屿
发布时间:2026-10-13| 6人浏览过
原创

本文针对2.9G大文件逐行读取场景,对比Python四种常见读取方式。测试环境为i7-6820HQ及32G内存。结果显示:readlines()内存飙升但速度较快;readline()内存稳定但耗时最长;直接迭代fh最快且内存低;fileinput模块最慢。推荐大文件处理使用直接迭代方式,兼顾效率与内存安全。

前言

Python提供了多种读取文件的方式,但在处理大型文件时,不同方法在运行效率和资源占用上存在显著差异。本文将深入探讨这些差异,并通过实际测试给出具体建议。

场景

测试目标为逐行读取一个容量为2.9G的大文件。

  • 测试硬件配置:CPU型号为Intel Core i7 6820HQ。
  • 测试硬件配置:内存容量为32GB。

方法

在读取每一行数据后,均执行一次字符串分割操作(split)。

所有测试方法均遵循最佳实践,使用with...as语句来打开文件,以确保资源管理的规范性。

with语句的核心优势在于上下文管理,它能确保无论操作过程中是否发生异常,都会执行必要的清理工作(如自动关闭文件、释放线程锁等),从而保障系统资源的正确释放。

方法一:最通用的读文件方式(readlines)

with open(file, 'r') as fh:
 for line in fh.readlines():
 line.split("|")

运行结果:耗时 15.4346568584 秒

通过系统监视器观察发现,内存使用量从4.8GB瞬间飙升至8.4GB。这是因为fh.readlines()会将文件所有行数据一次性加载到内存中。该方法仅适用于小文件,处理大文件时风险极高。

方法二:逐行读取(readline)

with open(file, 'r') as fh:
 line = fh.readline()
 while line:
 line.split("|")

运行结果:耗时 22.3531990051 秒

内存占用几乎保持不变,因为每次仅将一行数据存入内存。然而,其执行时间明显长于方法一,表明对于需要进一步处理的数据流,这种方式的效率较低。

方法三:直接迭代文件对象

with open(file) as fh:
 for line in fh:
 line.split("|")

运行结果:耗时 13.9956979752 秒

内存占用几乎保持不变,且执行速度比方法二更快,表现优异。

使用for line in fh时,Python将文件对象fh视为可迭代对象。它内部自动处理了缓冲IO和内存管理,因此无需担心大文件带来的内存溢出问题。这是Python中处理大文件最地道(pythonic)且推荐的方式。

方法四:使用fileinput模块

for line in fileinput.input(file):
 line.split("|")

运行结果:耗时 26.1103110313 秒

内存占用增加了约200-300MB,且执行速度是上述四种方法中最慢的。

总结

以上测试结果仅供参考。在业界公认的大文件读取方案中,方法三(直接迭代)通常被认为是最佳选择。但实际应用中,仍需根据具体的机器性能指标以及数据处理的复杂程度进行综合评估和选择。

以上就是本文的全部内容,希望这些对比分析能对大家在Python文件读写方面的学习或工作有所帮助。如有任何疑问,欢迎留言交流,感谢大家对本站的支持。

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。