Обзор

Наша библиотека позволяет осуществлять многопоточное сжатие некоторых форматов. Это позволяет существенно увеличить скорость сжатия данных.

Распараллеливание архивов BZIP2, LZIP и XZ

Количество потоков сжатия можно задать через свойство «потоки сжатия» соответствующего класса настроек. Значение по умолчанию — 1, поэтому сжатие выполняется в одном потоке. Однако если вы установите значение больше единицы, алгоритм будет использовать соответствующее количество ядер процессора.

Parallel compression to BZIP2

    save_options =  zp.bzip2.Bzip2SaveOptions()
    save_options.compression_threads = 4
    with zp.bzip2.Bzip2Archive() as archive:
        archive.set_source("data.bin")
        archive.save("archive.bz2", save_options)

Parallel compression to LZIP

    # Will use 16Mb for dictionary:
    settings = zp.lzip.LzipArchiveSettings(0x1000000)
    settings.compression_threads = 4
    with zp.lzip.LzipArchive(settings) as archive:
        archive.set_source("data.bin")
        archive.save("archive.lz")

Parallel compression to XZ

    settings = zp.xz.settings.XzArchiveSettings()
    settings.compression_threads = 4
    with zp.xz.XzArchive(settings) as archive:
        archive.set_source("data.bin")
        archive.save("archive.xz")

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

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

Сжатие LZMA2 и многопоточность в архивах 7Z

В этом примере показано, как создать архив 7z с помощью файла data.bin. Мы используем алгоритм сжатия LZMA2 с четырьмя потоками для эффективного сжатия данных.

Parallel compression to 7Z LZMA2

    compression_settings = zp.saving.SevenZipLZMA2CompressionSettings()
    compression_settings.compression_threads = 4
    entry_settings = zp.saving.SevenZipEntrySettings(compression_settings)
    with zp.sevenzip.SevenZipArchive(entry_settings) as archive:
        archive.create_entry("data.bin", "data.bin")
        archive.save("result.7z")

Этот код создает архив 7z, считывая данные из файла data.bin, используя SevenZipLZMA2CompressionSettings вместо настроек для Bzip2, Lzip или XZ, а также алгоритм сжатия LZMA2 с четырьмя потоками для сжатия. Он использует метод create_entry SevenZipArchive вместо метода set_source.

Ускорьте ZIP-архивирование с помощью параллельного сжатия

Создание ZIP-архива можно распараллелить на начальном уровне. Для этого используйте экземпляр ParallelOptions и его свойства.

    parallel_opt = zp.saving.ParallelOptions()
    parallel_opt.parallel_compress_in_memory =  zp.saving.ParallelCompressionMode.AUTO
    save_opt =  zp.saving.ArchiveSaveOptions()
    save_opt.parallel_options = parallel_opt
    with zp.Archive as archive:
        archive.create_entries("~/Data")
        archive.Save("archive.zip", save_opt)

Основные возможности:

  • Использование ParallelOptions для настройки параллельного сжатия в памяти.
  • Использование ArchiveSaveOptions для общих настроек сохранения.
  • Использование метода create_entries для добавления файлов из каталог ~/Data в архив.
Чтобы лучше понять значение значений перечисления ParallelCompressionMode, обратитесь к документации. Поэкспериментируйте с этими значениями, чтобы добиться наилучшего результата специально для ваших целей и конфигурации оборудования.

Другие поддерживаемые функции API Aspose.ZIP для Python.Net

С помощью библиотеки Aspose.ZIP в Python.Net вы можете легко решать различные задачи, связанные с документами в формате ZIP. Если вам нужно конвертировать форматы, объединять файлы, редактировать содержимое или извлекать данные, Aspose.ZIP предоставляет комплексные функциональные возможности для оптимизации вашего рабочего процесса и повышения производительности.

  
  

Aspose.Zip offers individual archive processing APIs for other popular development environments, listed below: