Одновременное чтение нескольких маринованных данных Python, буферизация и новые строки?

, чтобы дать вам контекст:

У меня есть большой файл f , размером в несколько гигов. Он содержит последовательные огурцы различных объектов, которые были сгенерированы запуском

для obj в objs: cPickle.dump (obj, f)

Я хочу воспользоваться преимуществами буферизации при чтении этого файла. Я хочу прочитать несколько выбранных объектов в буфер за раз. Как лучше всего это сделать? Хочу аналог readlines (buffsize) для маринованных данных. Фактически, если выбранные данные действительно разделены новой строкой, можно использовать строки чтения, но я не уверен, что это правда.

Другой вариант, который я имею в виду, - это сначала dumps () маринованный объект в строку, а затем записать строки в файл, каждая из которых разделена новой строкой. Чтобы прочитать файл обратно, я могу использовать readlines () и load () . Но я боюсь, что маринованный объект может иметь символ "\ n" , и это сбросит эту схему чтения файла. Мои опасения необоснованны?

Один из вариантов - выделить его как огромный список объектов, но это потребует больше памяти, чем я могу себе позволить. Настройку можно ускорить за счет многопоточности, но я не хочу идти туда, пока буферизация не заработает должным образом. Какая "лучшая практика" для подобных ситуаций.

РЕДАКТИРОВАТЬ: Я также могу читать необработанные байты в буфер и вызывать в нем нагрузки, но мне нужно знать, сколько байтов из этого буфера было израсходовано загрузками, чтобы я мог выбросить голову.

9
задан san 1 April 2011 в 00:24
поделиться