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

Какие еще существуют варианты реализовать сжатие пакета?
FishHook
Нахрена сжимать 500 байт?
Unnamed001
FishHook
Нахрена сжимать 500 байт?

Чтобы в открытом виде не слать
FishHook
Это не сжатие, алёша, это шифрование!
doza_and
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
Для начала надо выбрать стратегию шифрования открытый ключик или с паролями или может еще как.

И полюбому криптостойкость коротких однообразных сообщений невысока :(.
JOHN_16
__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 и его семейства - маленькие строки он не сжимает эффективно.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB