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'のfileパラメータには書き込まないようにしています。 – quamrana
FileLockクラスで指定されたファイルパラメータではなく、外部ファイルへの書き込みです。 – ubanthia
'FileLock'の呼び出しは" PATH "を引用します。あなたの 'open()'呼び出しは "PATH"も引用します。あなたが書き込みたいロックとファイルの両方として "PATH"を使用していると私は思っています。 – quamrana