, чтобы дать вам контекст:
У меня есть большой файл f
, размером в несколько гигабайт.Он содержит последовательные метки различных объектов, которые были сгенерированы при запуске
for obj in objs: cPickle.dump(obj, f)
. Я хочу воспользоваться буферизацией при чтении этого файла.Что я хочу, так это читать несколько выбранных объектов в буфер одновременно.Каков наилучший способ сделать это?Я хочу аналог readlines(buffsize)
для маринованных данных.На самом деле, если выбранные данные действительно разделены символом новой строки, можно использовать readlines, но я не уверен, что это правда.
Другой вариант, который я имею в виду, - это dumps()
сначала отфильтрованный объект до строкиа затем записать строки в файл, каждый из которых разделен новой строкой.Чтобы прочитать файл обратно, я могу использовать readlines()
и loads()
.Но я боюсь, что засоленный объект может иметь символ "\n"
, и это приведет к отказу от этой схемы чтения файлов.Мой страх необоснован?
Один из вариантов - выделить его как огромный список объектов, но для этого потребуется больше памяти, чем я могу себе позволить.Установка может быть ускорена многопоточностью, но я не хочу идти туда, пока я не установлю буферизацию должным образом.Какова «лучшая практика» для подобных ситуаций.
РЕДАКТИРОВАТЬ: я также могу читать в необработанных байтах в буфер и вызывать нагрузки на него, но мне нужно знать, сколько байтов этого буфера было использовано нагрузкамитак что я могу выбросить голову.