Что лучший способ состоит в том, чтобы отправить объекту по сети в Python?

Я должен отправить объекты вокруг сети. Я собираюсь быть Скрученным использованием, и я только что начал осматривать документацию для него.

Насколько я знаю, единственный путь, сокеты реализаций Python через текст. Таким образом, как я отправил бы объект с помощью строк? Рассол? Или есть ли лучше что-то?

10
задан Artjom B. 26 June 2015 в 16:37
поделиться

1 ответ

Наиболее распространенной сериализацией, предлагаемой между конечными точками Python, является формат pickle (в Python 2.any обязательно используйте модуль cPickle и ] -1 он же pickle.HIGHEST_PROTOCOL протокол; если вам нужна совместимость между Python 2. любой и Python 3. требуется больше внимания). Для особенно простых объектов модуль marshal иногда может быть быстрее и компактнее. Для взаимодействия с конечными точками, отличными от Python, json может быть лучшим (или вы можете использовать xml для определения или принятия других существующих форматов сериализации), но они, вероятно, будут более громоздкими и медленнее форматировать и разобрать.

Насколько я знаю, единственный способ python реализует сокеты через текст.

Нет, приветствуются все строки байтов! -) Вас может смутить тот факт, что в Python 2 «обычная строка» на самом деле является строкой байтов («текст» будет юникодом тип); Python 3 устанавливает все правильно и использует Unicode для «обычных строк» ​​и особый тип байтовой строки для строк байтов.

Строки байтов - это общий способ, которым любой язык будет выполнять любую форму сериализации и десериализации в соответствии с тем или иным протоколом - такие потоки байтов или большие двоичные объекты могут поступать в сети, базы данных, простые файлы и т. Д. И т. Д. конечно.

Twisted предлагает свой собственный формат сериализации как часть twisted.spread - он в основном для использования с Perspective Broker (PB), но вы можете использовать его для своих целей, если не хотите использовать ПБ по какой-то особой причине. Документация по части сериализации, twisted.spread.jelly , находится здесь , а также хорошо резюмирует цели формата ...:

Сохраняемость на основе S-выражений объекты python.

Это очень похоже на Соленый огурец; однако главная цель рассола вроде бы эффективность (как в космосе и время); основные цели желе безопасность, удобочитаемость и переносимость в другие среды.

Если вы больше заботитесь о безопасности, удобочитаемости и переносимости, чем о скорости и компактности, то jelly действительно может сослужить вам хорошую службу.

19
ответ дан 3 December 2019 в 20:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: