Уведомления

Группа в Telegram: @pythonsu

#1 Дек. 7, 2015 12:42:53

Unnamed001
Зарегистрирован: 2015-01-15
Сообщения: 31
Репутация: +  0  -
Профиль   Отправить e-mail  

Компрессия данных для обмена между сервером

Подскажите, собираю словарь (dict) конечный размер, через __sizeof__ показывает 500 байт, применяю компрессию через zlib.compress, пакет увеличивается аж в два раза, итого уже выходит 1 килобайт, вместо не сжатых 500 байт.

Какие еще существуют варианты реализовать сжатие пакета?

Офлайн

#2 Дек. 7, 2015 13:36:29

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Компрессия данных для обмена между сервером

Нахрена сжимать 500 байт?



Офлайн

#3 Дек. 7, 2015 13:39:25

Unnamed001
Зарегистрирован: 2015-01-15
Сообщения: 31
Репутация: +  0  -
Профиль   Отправить e-mail  

Компрессия данных для обмена между сервером

FishHook
Нахрена сжимать 500 байт?

Чтобы в открытом виде не слать

Офлайн

#4 Дек. 7, 2015 13:45:19

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Компрессия данных для обмена между сервером

Это не сжатие, алёша, это шифрование!



Офлайн

#5 Дек. 7, 2015 21:37:56

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

Компрессия данных для обмена между сервером

FishHook
Это не сжатие, алёша, это шифрование!
Ну FishHook ты даешь!!! Расшифровал что его зовут Алеша.
https://ru.wikipedia.org/wiki/%D0%A8%D0%B8%D1%84%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5
Для начала надо выбрать стратегию шифрования открытый ключик или с паролями или может еще как.

И полюбому криптостойкость коротких однообразных сообщений невысока :(.



Офлайн

#6 Дек. 7, 2015 22:44:42

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

Компрессия данных для обмена между сервером

__sizeof__ метод для стандартных типов возвращает объем памяти в байтах которое занимает python объект в памяти компьютера, это вовсе не означает что это его реальный объем. Что бы понять сколкьо занимает места ваш словарь ровно как передать его через внешние интерфейсы, Вам нужно сериализовать его в строковое представление.

d = {'key': 'one', 'value':1500, 'pos': [1,3,2,4]}
d.__sizeof__()
124
import cPickle
len(cPickle.dumps(d))
78
А вот потом его уже можно попробовать сжать zlib.compress, но опять же стоить помнить о накладных ресурсах алгоритмов сжатия deflate и его семейства - маленькие строки он не сжимает эффективно.



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version