Два скрипта python пишут с взаимоисключающим txt файлом и ждут друг друга - без многопоточности
У меня есть два скрипта, запущенных в python на той же машине, что и бесконечные циклы, они постоянно отслеживают некоторые значения. Они общаются через file.txt
B добавляет сообщения в файл file.txt, чтобы они накапливались. Когда A проверяет file.txt, он читает их и очищает file.txt
while true:
Open file.txt if B is not using it or when B is done
f = open('file.txt', 'r+')
message=f.read() #read all the messages that have accumulated
f.truncate() #delete the messages
f.close()
---use message do other things
В
while true:
---Gather information for the message
Open file.txt if A is not using it or when A is done
f = open('file.txt’,’a’)
f.write(‘message’)
f.close()
Главное, что я хочу, чтобы каждый из скриптов открывал файл file.txt только тогда, когда другой не использует его, или ждал, пока он перестанет использовать. Поэтому, пока B пишет, а A хочет прочитать, B останавливается на короткое время, а затем продолжает.
Там нет необходимости синхронизировать два. На самом деле я хочу, чтобы они были независимыми, а не проходными или работали параллельно. Например, B может ходить в циклах, в то время как A идет только один или наоборот. Или, если A по какой-то причине задерживается, сообщения просто накапливаются в file.txt, так как B продолжает работать.
Я прочитал о блокировке файла. Можно ли было бы сделать в каждом из сценариев:
A
if "file locked by B":
wait for unlock
lock file
open file
read from file
empty file
close file
unlock file
Какие инструменты можно использовать для "Ожидание разблокировки" и "Файл заблокирован B" и "Файл блокировки"?