我有一个循环每5秒产生一次线程,每个线程都试图在python中使用filelock模块追加相同的文件,但看起来像它们最终结束 - 写入文件甚至在使用“a”(使用线程和文件锁)后,python 2.7文件被覆盖
import threading
import filelock
def loop():
threading.Timer(5,loop).start()
lock = filelock.FileLock("PATH", timeout=20)
with lock.acquire(timeout=0.1, poll_intervall=0.01):
with open("PATH", "a") as myFile:
myFile.write("DATA\n\n")
lock.release()
编辑:附加信息: 多次迭代后,我在文件中找到的数据是从最后一个线程,而不是第一个。
编辑:如下面的georgexsh所述,append是原子的,因此我们不需要锁定它。
该文档似乎认为'FileLock'中的文件参数不应写入。 – quamrana
我正在写入外部文件,而不是由FileLock类给出的文件参数。 – ubanthia
您对'FileLock'的调用引用了“PATH”。你的open()调用也会引用“PATH”。它在我看来你正在使用“PATH”作为你想写入的锁和文件。 – quamrana