Два скрипта 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" и "Файл блокировки"?

0 ответов

Другие вопросы по тегам