我有 4 个并行运行的 Python 脚本/进程,每个脚本/进程每 ~30 秒将文本附加到文件中:
while True:
id = processing_job() # 30 seconds long
with open('log.txt', 'a+') as f:
f.write('Job number #%i done.' % id)
使用open(..., 'a+')
时,两个进程想要同时写入,然后某些文本无法写入log.txt
并丢失,是否存在风险?
注意:我使用的是 Windows 平台。
我做了一个快速测试,打开了同一个文件,它没有给我带来任何问题。
Python36已被使用。
像这样测试:
test1.py
with open("test","a+") as file_:
file_.write("First process!n")
print("done!")
test2.py
with open("test","a+") as file_:
file_.write("Second process!n")
print("done!")
python3 test1.py & python3 test2.py
输出符合预期。
First process!
Second process!
在同一文件上运行了很多其他变体(第一个位字符串,同时第二个位字符串(,没有遇到任何错误