У меня есть скрипт на python, который выдает файл yaml каждую секунду во время работы. Однако иногда я обнаружил, что файл yaml не завершен. Я предполагаю, что это совпадение, что в то же время я закрываю прогресс (скрипт запускается в строке комманды Windows), пока файл сохраняется. Пример кода следующий:
class State(object):
def __init__(self):
...
self.__t = threading.Thread(name='StateAutoSave', target=self.__auto_save)
self.__t.start()
def __auto_save(self):
while 1:
try:
...
self.__save()
except Exception as err:
logging.exception(err)
time.sleep(1)
def __save(self):
...
with open(self.__yaml_file, 'w') as outfile:
yaml.dump(data, outfile, default_flow_style=False)
Как избежать этой проблемы? или есть такой метод, как функция деструктора в Python, чтобы мы могли что-то сделать, когда программа закрывается? (Кажется, что «с» здесь не полностью работает)