LINUX.ORG.RU

Бинарная сериализация объекта

 


1

3

Может кто что подскажет. Нужна компактная и быстрая библиотека, которая помогла бы упаковывать объекты в заданный мною каким-то образом формат. Что-то типа struct, только по удобней

Не нужно:

* умение самостоятельно определять, что и как делать (то есть монстра типа pickle не надо)

* работа через промежуточное представление (типа simplejson), не хочется тратить время на преобразование моего объекта в dict/list (хотя допустимо)

* вывод в текстовом виде

★★★★

Последнее исправление: namezys (всего исправлений: 2)

Ответ на: комментарий от namezys

Ты о protocol buffers? Выглядит довольно интересным - сам подумываю испробовать.

Еще обрати внимание на messagepack и на YAML (должны быть библиотеки чтения, записи питоновских термов - сам формат очень компактен и удобен (на мой взгляд круче json))

swwwfactory ★★
()
Ответ на: комментарий от swwwfactory

YAML - он человекочитабельный. Смысла в нем нет, там десятки гигабайт файлы

messagepack - надо подумать

namezys ★★★★
() автор топика
Ответ на: комментарий от nu11

highload это. Пикл меня убил. Чтоб поднять 400 метровый файл, которые строит 1 Гб объект, он потратил 9Гб!!!! памяти

namezys ★★★★
() автор топика
Ответ на: комментарий от true_admin

если нужно в plaintext то я ничего близкого не нашёл.

Не, интересует именно YAML

swwwfactory ★★
()
Ответ на: комментарий от anonymous

Ну тогда уж и json, чего уж тут.

Если не нужна обработка на клиенте (хотя есть либы) то да - json.

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

пример: http://www.yaml.org/spec/1.2/spec.html#id2761803

swwwfactory ★★
()
Ответ на: комментарий от namezys

Чтоб поднять 400 метровый файл, которые строит 1 Гб объект, он потратил 9Гб!!!! памяти

интересно как - 400 метровые файлы на highload - 3D-графика, игры, гео-приложения, youtube чтоль?

Подробить такие файлы никак?

swwwfactory ★★
()
Ответ на: комментарий от swwwfactory

Вот чего мне не надо - так это эти возможности

namezys ★★★★
() автор топика
Ответ на: комментарий от namezys

Если в файле лежит несколько толстых объектов, то для них надыть например писать свои __get/setstate__ для cPickle (им вообще то тоже надо правильно пользоваться), или вообще делать свой потоковый формат на С который тупо умеет грузить какие то толстые куски.

Если в файле мешанина из мелких объектов, то надо либо объединять их в крупные и см. выше, либо пихать их в файл последовательно тем же cPickle (он вообще то тоже потоковый).

И у меня смутное ощущение, что это надо делать на С или чем то эдаком (в виде библиотеки), для голого питона как бы великоват объем если хочется экономить память да еще и производительность приемлемую...

AIv ★★★★★
()

перечитывал пост - вспомнил еще про один интересный формат.
ASN.1 - активно применяется в SNMP

Но собственно дело не в нем - перечитывая про АСН набрел на весьма полезную информацию для всех, кто интересуется сериализацией.

http://en.wikipedia.org/wiki/Comparison_of_data_serialization_formats

swwwfactory ★★
()
Ответ на: комментарий от namezys

Ага. Сразу на ассмеблере писать

Какой у вас кругозор широкий.

anonymous
()
Ответ на: комментарий от anonymous

Да-а, вот же повезло, какую редкость отрыл.

Какая замечательная интуиция!

swwwfactory ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.