Поиск совета относительно лучшей техники для сохранения сложных структур данных Python через сессии программы.
Вот список методов, которые я придумал до сих пор:
Рассол является самой легкой и самой быстрой техникой, но мое понимание - то, что нет никакой гарантии, что вывод рассола будет работать через различные версии Python 2.x/3.x или через реализации на 32 и 64 бита Python.
Json только работает на простые структуры данных. Jsonpickle, кажется, исправляет это И, кажется, записан для работы через различные версии Python.
Сериализация к XML или к базе данных возможна, но представляет дополнительное усилие, так как мы должны были бы сделать сериализацию сами вручную.
Спасибо, Malcolm
У вас неверное представление о соленых огурцах: они гарантированно работают на всех версиях Python. Вам просто нужно выбрать версию протокола, которая поддерживается всеми версиями Python, о которых вы заботитесь.
Техника, которую вы пропустили, - это marshal, который не гарантированно работает в версиях Python (и btw, как пикули написаны .pyc-файлы).
.Вы пропустили модули маршала и полки .
Также эта страница питоновых документов охватывает персистентность
Каковы ваши критерии для "лучших" ?
pickle
может сделать большинство Python структур, глубоко вложенных тоже(Тонкая печать:
cPickle.dump(protocol=-1) сжимает, в одном случае 15M pickle / 60M sqlite, но может сломаться.
Строки, которые встречаются много раз, например, названия стран, могут занимать больше памяти, чем вы ожидаете;
смотрите builtin intern().
)