MST

星途 面试题库

面试题:如何高效处理超大字符串且内存占用低

假设你需要处理一个可能达到数GB大小的文本文件内容(作为一个超大字符串看待),要求在处理过程中内存占用尽可能低,同时实现高效的文本分析(如统计特定单词出现次数),请设计详细的Python解决方案,并解释方案中的关键技术点和性能优化策略。
14.0万 热度难度
编程语言Python

知识考点

AI 面试

面试题答案

一键面试

Python解决方案

def count_specific_word(file_path, target_word):
    word_count = 0
    with open(file_path, 'r', encoding='utf-8') as file:
        for line in file:
            words = line.split()
            for word in words:
                if word == target_word:
                    word_count += 1
    return word_count

使用示例:

file_path = 'large_text_file.txt'
target_word = 'example'
result = count_specific_word(file_path, target_word)
print(f"The word '{target_word}' appears {result} times.")

关键技术点

  1. 逐行读取:使用with open(file_path, 'r', encoding='utf-8') as file打开文件,并通过for line in file逐行读取文件内容。这样避免一次性将整个数GB的文件读入内存,极大地降低了内存占用。
  2. 字符串分割:对每一行使用split()方法将其分割成单词,方便后续对每个单词进行检查。

性能优化策略

  1. 避免不必要的转换:保持文本以字符串形式处理,不进行多余的格式转换,减少额外的内存开销和处理时间。
  2. 高效的字符串比较:直接使用==进行单词比较,Python在字符串比较上有较好的优化,这种简单的比较操作效率较高。
  3. 减少中间数据存储:在遍历过程中直接统计目标单词的出现次数,而不是先存储所有单词再进行统计,进一步降低内存占用。