Przegląd

Nasza biblioteka umożliwia kompresję wielostrumieniową dla niektórych formatów. Pozwala to znacznie zwiększyć prędkość kompresji danych.

Równoległe archiwa BZIP2, LZIP i XZ

Liczbę wątków kompresyjnych można ustawić za pomocą właściwości „wątki kompresyjne” odpowiedniej klasy ustawień. Wartość domyślna to 1, dlatego kompresja jest wykonywana w jednym wątku. Jeśli jednak ustawisz wartość większą niż jeden, algorytm wykorzysta odpowiednią liczbę rdzeni procesora

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")

W tych przykładach fragmenty kodu Pythona wykonują podobne działania przy tworzeniu archiwów, różniąc się jedynie zastosowanymi formatami kompresji. Zwykle wykonują następujące kroki:

  • Utwórz obiekt ustawień specyficzny dla formatu archiwum.
  • Ustaw liczbę strumieni równoległych do kompresji.
  • Tworzony jest obiekt archiwum w kontekście z, co zapewnia automatyczne zamknięcie archiwum po zakończeniu operacji.
  • Określ źródło danych, które ma zostać dodane do archiwum.
  • Zapisz archiwum w odpowiednim formacie za pomocą skonfigurowane ustawienia.

Kompresja LZMA2 i wielowątkowość w archiwach 7Z

Ten przykład pokazuje, jak utworzyć archiwum 7z przy użyciu pliku data.bin. Do wydajnej kompresji danych używamy algorytmu kompresji LZMA2 z czterema strumieniami.

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")

Ten kod tworzy archiwum 7z poprzez odczytanie danych z pliku data.bin przy użyciu SevenZipLZMA2CompressionSettings zamiast ustawień Bzip2, Lzip lub XZ oraz algorytmu kompresji LZMA2 z czterema wątkami do kompresji. Używa metody create_entry z SevenZipArchive zamiast metody set_source.

Przyspiesz archiwizację ZIP dzięki kompresji równoległej

Tworzenie archiwum ZIP można zrównoleglić na poziomie podstawowym. Aby to zrobić, użyj instancji ParallelOptions i jej właściwości

    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)

Główne funkcje to:

  • Używanie ParallelOptions do konfigurowania równoległej kompresji w pamięci.
  • Używanie ArchiveSaveOptions do ogólnych ustawień zapisywania.
  • Używanie metody create_entries do dodawania plików z katalog ~/Data do archiwum.
Aby lepiej zrozumieć znaczenie wartości wyliczeniowych ParallelCompressionMode, zapoznaj się z dokumentacją. Baw się tymi wartościami, aby uzyskać najlepszy wynik dla swoich celów i konfiguracji sprzętowej.

Inne obsługiwane funkcje Aspose.ZIP dla Python.Net API

Dzięki bibliotece Aspose.ZIP w Python.Net możesz bezproblemowo wykonywać różne zadania związane z dokumentami w formacie ZIP. Niezależnie od tego, czy potrzebujesz konwertować formaty, scalać pliki, edytować zawartość czy wyodrębniać dane, Aspose.ZIP zapewnia wszechstronną funkcjonalność usprawniającą przepływ pracy i zwiększającą produktywność.

  

Support and Learning Resources

  
  

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