Мне просто интересно узнать о специфике файлового блока модуля python и его поведении в нескольких обстоятельствах.Поведение модуля файлового блокировки Python с помощью `with:` statement
Во-первых, как точно состоит оператор with:
, обрабатываемый потоками. Если несколько потоков вызывают with:
, то он заблокирован по потоку по потоку? Возможно ли, что два потока могут одновременно захватить замок?
Во-вторых, когда я использую with:
, мне нужно очистить замок после его использования? Автоматически очищается ли замок после завершения инструкции with:
?
В-третьих, у меня есть экземпляр в моем коде, где я считаю, что файл должен быть создан, а затем заблокирован немедленно. В настоящее время я использую это:
channel_file = open(os.path.join('channels', username), 'w+')
with filelock.FileLock(os.path.join('channels', username)):
channel_file.write(json.dumps({'rate': reobj.group(1),'time': reobj.group(2)}))
Если бы была возможность, что другой поток может прочитать файл с того времени, он был создан, будет ли эта защита против этого?
Это также поднимает четвертую точку. Имеет ли доступ блокировки чтения блокировки при использовании with:
?