Я мало знаком с сериализацией. Вот что я понял:
Есть пакеты, удобные для человека json, есть пакеты, удобные для хранения в Python - pickle. Есть межязыковые пакеты - protobuf.
Ну три модуля должно бы хватить?
Когда я открыл PyPi с поисковым вопросом 'serialization' - я получил 4+ страницы модулей. Например protobuf имеет 3 модуля...
Итак 2 вопроса.
1. Почему dill например, не совместили с pickle?
2. Можно ли обойтись 3-4 стандартами на все случаи жизни? Если нет - то какова причина такого разнообразия модулей?
- 4,090
2 Answers
Потому, что модули пишет и публикует на PyPI не одна какая-то организация, а множество независимых программистов со всего мира. Каждый из них имеет своё видение какой-либо области, включая сериализацию. Когда какой-то модуль с PyPI кажется мне неудобным или не полностью реализует мои потребности, я пишу свой и публикую.
- 66,575
-
то есть 100 000 + модулей PyPi никто не модерирует? Ну, это ж не гитхаб все же... какое то одобрение "старейшин" должно происходить или нет... – Vasyl Kolomiets Nov 12 '17 at 12:07
-
2Более того, там есть множество давно устаревших модулей, которые невозможно запустить в современном окружении. И есть не меньше модулей, которые были сломаны изначально. И есть модули абсолютно бессмысленные. Такая ситуация во всех публичных репозиториях для всех общеупотребительных языков. – Sergey Gornostaev Nov 12 '17 at 12:15
-
Жаль, не могу поставить отметку "ответ" на оба ответа. Они дополняют друг друга.... – Vasyl Kolomiets Nov 13 '17 at 09:13
По-моему нет смысла бороться с эволюцией и естественным отбором. Хорошие, удобные, эффективные, etc. модули вытеснят те, которые им проигрывают.
Пример из моей рабочей жизни:
около 2 лет назад я выбрал для себя, как мне тогда казалось, идеальный модуль - HDF5 (PyTables) для быстрой и удобной (де-)сериализации данных в Pandas. Несколько позже появилась новая библиотека - Feather Format (Apache Arrow), которая значительно быстрее HDF5, но в ней отсутствуют такие например вещи как чтение с диска по индексу. Теперь в зависимости от задачи я выбираю либо HDF5 (если мне надо обрабатывать наборы данных, которые не помещаются в памяти) или Feather если мне надо быстро читать/писать полный набор данных (который помещается в памяти).
Вполне возможно, что в будущем в Feather Format добавят доступ по индексу или появится другая еще более крутая библиотека и я с удовольствием перейду на неё.
Сейчас я изучаю Apache Spark и там точно такая же ситуация - единого стандарта нет и постоянно появляется что-то новое. Некоторые из этих новых форматов выживают и вытесняют устоявшиеся "стандартные" форматы, другие же новые форматы просто вымирают...
Если бы был один незыблемый формат, то не было бы никакого развития и усовершенствования.
- 149,321
- 12
- 59
- 132

__repr__от__str__? (на график посмотрите) – jfs Nov 12 '17 at 12:16