Нет, первый подход не гарантирует записи данных, поскольку не гарантируется, что файл будет сброшен и закрыт, когда на дескриптор больше не ссылается его член write
.Это, вероятно, имеет место с CPython, но не обязательно с другими интерпретаторами Python;это деталь реализации сборщика мусора Python.
Вы действительно должны использовать второй подход, за исключением того, что os.fsync
не требуется;просто закройте файл, и данные должны быть доступны другим процессам.
Или, что еще лучше ( Python> = 2.5 ):
with open(self.statusfile, 'w') as f:
f.write(status)
with
версия безопасна для исключений: файл закрывается даже в случае сбоя write
.