MST

星途 面试题库

面试题:Python文件模式之高级题

假设你有一个非常大的日志文件,需要在不加载整个文件到内存的情况下,以 'a' 模式追加特定格式的数据,同时要确保多线程环境下数据追加的一致性,描述你的实现思路并给出关键代码片段。
25.0万 热度难度
编程语言Python

知识考点

AI 面试

面试题答案

一键面试

实现思路

  1. 文件操作:使用文件对象以追加模式('a')打开日志文件,避免一次性加载整个文件到内存。
  2. 多线程同步:利用锁机制(如 threading.Lock)来确保在多线程环境下对文件的追加操作是线程安全的,从而保证数据追加的一致性。

关键代码片段(Python 示例)

import threading

# 创建锁对象
file_lock = threading.Lock()

def append_to_log(data):
    with file_lock:
        with open('large_log_file.log', 'a') as f:
            # 这里假设 data 已经是特定格式
            f.write(data + '\n')

可以这样在多线程环境中调用:

# 创建多个线程并启动
threads = []
data_list = ['data1', 'data2', 'data3']
for data in data_list:
    t = threading.Thread(target=append_to_log, args=(data,))
    threads.append(t)
    t.start()

# 等待所有线程完成
for t in threads:
    t.join()