Python 3 загрузка файла большой рассол - PullRequest
0 голосов
/ 05 апреля 2020

Много лет go я создавал сценарий ad ho c для извлечения некоторых данных и другого для их анализа. Данные хранятся в большом словаре, сохраненном в файле маринования первым скриптом, потому что это было проще всего для меня в то время. Эта установка развивалась во времени, поэтому теперь у меня есть исторические (ежемесячные) данные в файлах маринадов, каждый размером от 100 МБ и выше. Данные в каждом из этих файлов - один гигантский словарь c.

Это сработало на удивление хорошо, но в последнее время у меня возникли проблемы. Это могло начаться с месяцев обновления компьютера и ОС go, но я не уверен. Я использую Python 3.7.5 на Fedora 29, на машине с 64 ГБ ОЗУ. На предыдущей машине, которой было 10 лет и которая имела половину этой оперативной памяти, она работала без нареканий (она была немного медленной).

В некоторых случаях загрузка длится вечно и - если я позволю этому go вкл - это начинает останавливать мой компьютер. Единственный способ прекратить загрузку - это Ctrl + Z , а затем kill -9 %1. Ctrl + C не будет работать.

Эти файлы прекрасно работали до обновления машины и не изменились с момента их создания. Как ни странно, некоторые файлы работают нормально. Это не связано с их размером (т. Е. Больший файл может работать, а меньший - нет). Это также, кажется, не зависит от возраста файлов. Например, два старых файла меня сейчас не устраивают, тогда некоторые из них работают (и быстро!), Затем некоторые не работают, и т. Д. c.

Я не уверен в этом, но это кажется, что это не всегда одни и те же файлы, которые представляют такое поведение. У меня такое ощущение, что по крайней мере некоторые файлы иногда загружаются нормально (в течение нескольких секунд) и иногда отображают это поведение.

Сценарии всегда выполнялись в Python 3, и все файлы Pickle имеют версию протокола 3.

MWE для сбойной загрузки просто загружается:

import pickle
with open("subdir1/subdir2/file_name.pickle", "rb") as f:
    d = pickle.load(f)

В журналах нет ошибок диска, поэтому я предполагаю, что файлы не повреждены.

Понятия не имею, что здесь попробовать. Даже если бы я go преобразовал их в другой формат, мне нужно было бы загрузить данные, чтобы сделать это.

Итак, вопрос в том, что может быть причиной этого, и, что более важно, что я могу с этим сделать?

...