面试题答案
一键面试文件锁机制的作用
在多进程或多线程环境下,文件锁机制用于确保在同一时间只有一个进程或线程能够对文件进行特定操作(如写入)。这可以防止数据竞争和文件损坏,保证数据的一致性和完整性。例如,在日志记录场景中,如果多个进程同时向同一个日志文件写入内容,可能导致日志记录混乱,文件锁机制可以避免这种情况发生。
使用fcntl
模块实现简单文件写锁示例代码
import fcntl
import os
def write_to_file(file_path, content):
with open(file_path, 'a') as f:
try:
fcntl.flock(f, fcntl.LOCK_EX)
f.write(content + '\n')
finally:
fcntl.flock(f, fcntl.LOCK_UN)
if __name__ == '__main__':
file_path = 'test.txt'
write_to_file(file_path, 'This is a test line')
上述代码定义了一个write_to_file
函数,该函数接收文件路径和要写入的内容作为参数。在函数内部,使用fcntl.flock
获取文件的排他锁(fcntl.LOCK_EX
),以确保在写入文件时没有其他进程同时写入。写入完成后,通过fcntl.flock
释放锁(fcntl.LOCK_UN
)。if __name__ == '__main__':
块用于测试该函数,向test.txt
文件写入一行测试内容。