Python 3.14+compression.zstdпонятие
compression.zstd.DecompressionParameter
параметры сжатия
Перечисление настроек распаковки zstd для словаря options; по сути один параметр — window_log_max, предел памяти под окно.
Синтаксис
options={DecompressionParameter.window_log_max: N}
По умолчанию распаковщик отказывается от кадров, которым нужно окно больше 2**27 байт (128 МиБ), — это защита от «бомб» по памяти. Если данные сжаты с большим window_log (например, ради long distance matching) потоковым сжатием, без явного window_log_max придёт ZstdError «Frame requires too much memory». Поднимайте предел только для своих данных: для чужого ввода он и есть защита.
Примеры
# Python 3.14+
from compression import zstd # → ? нужна сборка CPython с libzstd
data = b'hello zstd ' * 100
comp = zstd.ZstdCompressor(options={zstd.CompressionParameter.window_log: 28})
frame = comp.compress(data) + comp.flush()
try:
zstd.decompress(frame)
except zstd.ZstdError as e:
print(e) # → Unable to decompress Zstandard data: Frame requires too much memory for decoding
opts = {zstd.DecompressionParameter.window_log_max: 28}
print(zstd.decompress(frame, options=opts) == data) # → True
См. также
Открыть в полном глоссарииdocs.python.orgСообщить о неточности