Pickle файл слишком большой для оперативной памяти - PullRequest
0 голосов
/ 21 февраля 2020

У меня очень большой файл (скажем, 50 ГБ), который не помещается в ОЗУ, полученный с помощью requests:

req = requests.get(url, allow_redirects=True, stream=True)

Мне нужно передать его в библиотеку, которая внутренне работает pickle.dumps(x) на объекте. Я не могу контролировать, как здесь используется pickle, поэтому я не могу попытаться выгрузить каждый кусок по отдельности.

Если я использую req.content (весь файл в виде одной большой байтовой строки), я получаю MemoryError, поскольку размер файла составляет 50 ГБ. Я могу получить доступ к фрагментам данных, используя req.iter_chunks(), но Pickle не примет генератор (TypeError: can't pickle generator objects).

Можно ли как-нибудь передать этот файловый объект из inte rnet в файл pickle?

...