Прочитать большой pickle без MemoryError

Есть test.pickle на 1 гиг, при pickle.load(test_file) получаю MemoryError. Оперативы хватает сполна. Можно ли как-то прочитать test.pickle и пересохранить с новым протоколом попробовать? Он был сохранён с 4, хочу с 5 попробовать. joblib.load не помог. Любые хаки со сторонними библиотеками или вызовом gc подойдут, не хочу данные терять.


Ответы (1 шт):

Автор решения: стручок

Проблема была в том, что использовал Win32 инсталляцию питона на винде (на это натолкнуло то, что процесс использовал только 4 с лишним гига и вылетала ошибка). Поставил Win64 и он смог заиспользовать больше: 7.4 гига в пике для файла 1.6 гиг -- seems good!

Если надо сделать несколько load-ов подряд, то это также помогает после каждого лода:

data.clear()
gc.collect()

Отличий между 4 и 5 протоколами ни в лоаде, ни в дампе по памяти не заметил.

→ Ссылка