#python #сериализация
Я мало знаком с сериализацией. Вот что я понял: Есть пакеты, удобные для человека json, есть пакеты, удобные для хранения в Python - pickle. Есть межязыковые пакеты - protobuf. Ну три модуля должно бы хватить? Когда я открыл PyPi с поисковым вопросом 'serialization' - я получил 4+ страницы модулей. Например protobuf имеет 3 модуля... Итак 2 вопроса. 1. Почему dill например, не совместили с pickle? 2. Можно ли обойтись 3-4 стандартами на все случаи жизни? Если нет - то какова причина такого разнообразия модулей?
Ответы
Ответ 1
По-моему нет смысла бороться с эволюцией и естественным отбором. Хорошие, удобные, эффективные, etc. модули вытеснят те, которые им проигрывают. Пример из моей рабочей жизни: около 2 лет назад я выбрал для себя, как мне тогда казалось, идеальный модуль - HDF5 (PyTables) для быстрой и удобной (де-)сериализации данных в Pandas. Несколько позже появилась новая библиотека - Feather Format (Apache Arrow), которая значительно быстрее HDF5, но в ней отсутствуют такие например вещи как чтение с диска по индексу. Теперь в зависимости от задачи я выбираю либо HDF5 (если мне надо обрабатывать наборы данных, которые не помещаются в памяти) или Feather если мне надо быстро читать/писать полный набор данных (который помещается в памяти). Вполне возможно, что в будущем в Feather Format добавят доступ по индексу или появится другая еще более крутая библиотека и я с удовольствием перейду на неё. Сейчас я изучаю Apache Spark и там точно такая же ситуация - единого стандарта нет и постоянно появляется что-то новое. Некоторые из этих новых форматов выживают и вытесняют устоявшиеся "стандартные" форматы, другие же новые форматы просто вымирают... Если бы был один незыблемый формат, то не было бы никакого развития и усовершенствования.Ответ 2
Потому, что модули пишет и публикует на PyPI не одна какая-то организация, а множество независимых программистов со всего мира. Каждый из них имеет своё видение какой-либо области, включая сериализацию. Когда какой-то модуль с PyPI кажется мне неудобным или не полностью реализует мои потребности, я пишу свой и публикую.
Комментариев нет:
Отправить комментарий