MST

星途 面试题库

面试题:Python处理百万位大型文件时,如何使用生成器优化内存

假设你要处理一个百万行的文本文件,每行是一个简单的字符串。请用Python代码展示如何使用生成器逐行读取文件内容,以避免一次性将整个文件加载到内存中,并说明这样做的优势。
24.5万 热度难度
编程语言Python

知识考点

AI 面试

面试题答案

一键面试
def read_large_file(file_path):
    with open(file_path, 'r', encoding='utf-8') as file:
        for line in file:
            yield line.strip()

# 使用示例
file_path = 'your_large_file.txt'
for line in read_large_file(file_path):
    print(line)

优势

  1. 内存高效:当处理百万行甚至更大的文件时,一次性将整个文件读入内存可能会导致内存溢出错误。而使用生成器逐行读取,每次只在内存中保留一行数据,大大减少了内存占用,使得程序可以处理远超系统内存大小的文件。
  2. 即时处理:生成器在读取到每一行后就可以立即对其进行处理,而无需等待整个文件加载完成,提高了处理效率和响应速度。
  3. 灵活性:生成器允许按需获取数据,适用于需要对文件进行流式处理的场景,比如实时数据分析、日志处理等。