Компресійні фільтри
В той час як Компресійні обгортки забезпечують спосіб створення gzip-і bz2-сумісних файлів у локальній файловій системі, вони не надають загальних засобів для компресії в мережевих потоках, як і не надають засобів для створення потоку без компресії з подальшим перетворенням на компресований. Для цього до будь-яких потокових ресурсів у будь-який час можуть застосовуватися компресійні фільтри.
Зауваження: Компресійні фільтри. не генерують заголовків та закінчень, які використовують утиліти командного рядка, такі як
gzip
. Вони просто компресують (стискають) і декомпресують (розтискають) порції даних у потіку даних, що компресується.
zlib.deflate та zlib.inflate
zlib.deflate
(компрессия) иzlib.inflate
(декомпресія) є реалізаціями методів стиснення, описаних у » RFC 1951. deflate
приймає три аргументи, передані у вигляді асоціативного масиву . level
визначає, який рівень компресії використати (1-9). Підвищення цього значення призведе до зменшення обсягів даних рахунок збільшення часу обробки. Існують також два спеціальні рівні компресії: 0 (для відключення компресії) і -1 (внутрішнє значення за замовчуванням бібліотеки zlib - на поточний момент дорівнює 6) . window
- це логарифм із основою 2 від розміру вікна діапазону стиснення. Високі значення (аж до 15 - 32768 байт) призводять до поліпшення компресії рахунок збільшення необхідної пам'яті, тоді як низькі значення (аж до 9 - 512 байт) призводять до погіршення компресії рахунок зменшення необхідної пам'яті. Значення аргументу window
по умолчанию на текущий момент является**15
**. . memory
визначає масштаб пам'яті, що резервується. Допустимі значення знаходяться в діапазоні від 1 (мінімальне резервування) до 9 (максимальне резервування). Таке резервування пам'яті впливає лише на швидкість і не впливає на розмір даних, що генеруються.
Зауваження: Так як рівень компресії є найбільш часто використовуваним аргументом, ви можете передати тільки його як звичайне ціле число (integer), замість того щоб передавати масив з одного елемента.
компресійні фільтри zlib.* доступні, якщо активовано підтримку zlib
Приклад #1zlib.deflate
иzlib.inflate
Loading...
Приклад #2 Спрощене використання zlib.deflate
Loading...
bzip2.compress та bzip2.decompress
bzip2.compress
иbzip2.decompress
працюють так само, як і фільтри zlib, описані вище. Фільтр bzip2.compress
приймає два аргументи у вигляді елементів асоціативного масиву: blocks
є цілим (integer) значенням в діапазоні від 1 до 9 і вказує на кількість 100-кілобайтових блоків пам'яті для резервування в якості робочого простору . work
- це так само ціле чисельне (integer) значення в діапазоні від 0 до 250, що визначає скільки зусиль потрібно витратити на звичайний метод компресії перед перемиканням на повільний, але більш надійний метод. Зміна цього параметра впливає лише швидкість компресії. Ні розмір стисненого результату, ні обсяг пам'яті, що використовується, не змінюються за допомогою цієї настройки. Значення 0 вказує бібліотеці bzip використовувати власне внутрішнє значення за промовчанням. Фільтр bzip2.decompress
приймає лише один аргумент, який може бути переданий або як звичайне boolean-значення, або як елемент small
ассоциативного массива. Когдаsmall
установлен в**true
**, бібліотека bzip зробить декомпресію з мінімальною витратою пам'яті рахунок зниження швидкості.
Компресійні фільтри bzip2* доступні, якщо активовано підтримку bz2
Приклад #3bzip2.compress
иbzip2.decompress
Loading...