#python #pickle
Вопрос:
Я запускал программу машинного обучения python на своем компьютере с Windows. Он обновляет файл рассола объемом 340 МБ каждые 1-2 секунды. А потом я играю в видеоигры, пока он работает. Игра выходит из строя каждые 1-2 дня. Самое странное, что каждый раз, когда игра выходит из строя, файл pickle повреждается. Программа больше не может его распаковать.
Сообщение об ошибке было:
pickle.UnpicklingError: invalid load key, 'x00'.
Практически невозможно, чтобы игра вышла из строя во время сохранения файла. Сохранение файла заняло менее 0,01 секунды в цикле 1-2 секунды.
Сначала я попытался перейти к временному файлу , а затем os.replace(temp_file, real_file)
, чтобы при сбое во время сохранения файла, я увидел бы, что временный файл все еще там после сбоя.
with open("temp_file", "wb") as outp:
pickle.dump(my_data, outp, pickle.HIGHEST_PROTOCOL)
os.replace("temp_file", "real_file")
Но там нет временного файла, только настоящий файл. Это означает, что сбой не произошел во время сохранения файла. Тогда как же файл pickle мог быть поврежден? Ошибка Python?