Aperçu

Notre bibliothèque permet la compression multi-flux pour certains formats. Cela vous permet d'augmenter considérablement la vitesse de compression des données.

Parallélisation des archives BZIP2, LZIP et XZ

Le nombre de threads de compression peut être défini via la propriété « threads de compression » de la classe de paramètres correspondante. La valeur par défaut est 1, et la compression est donc effectuée sur un seul thread. Cependant, si vous définissez une valeur supérieure à un, l’algorithme utilisera le nombre correspondant de cœurs de processeur.

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

Dans ces exemples, les extraits de code Python effectuent des actions similaires pour créer des archives, ne différant que par les formats de compression utilisés. Ils suivent généralement ces étapes :

  • Créez un objet de paramètres spécifique au format d’archive.
  • Définissez le nombre de flux de parallélisme pour la compression.
  • Un objet d’archive est créé dans le contexte avec, qui garantit la fermeture automatique de l’archive une fois les opérations terminées.
  • Spécifiez la source de données à ajouter à l’archive.
  • Enregistrez l’archive dans le format approprié en utilisant les paramètres configurés.

Compression LZMA2 et multithreading dans les archives 7Z

Cet exemple montre comment créer une archive 7z à l’aide du fichier data.bin. Nous utilisons l’algorithme de compression LZMA2 avec quatre flux pour compresser efficacement les données.

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

Ce code crée une archive 7z en lisant les données du fichier data.bin, en utilisant SevenZipLZMA2CompressionSettings au lieu des paramètres de Bzip2, Lzip ou XZ et de l’algorithme de compression LZMA2 avec quatre threads pour la compression. Il utilise la méthode create_entry de SevenZipArchive au lieu de la méthode set_source.

Accélérez l'archivage ZIP avec la compression parallèle

La création d’une archive ZIP peut être parallélisée au niveau d’entrée. Pour ce faire, utilisez l’instance ParallelOptions et ses propriétés

    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)

Les principales fonctionnalités sont :

  • Utiliser ParallelOptions pour configurer la compression parallèle en mémoire.
  • Utiliser ArchiveSaveOptions pour les paramètres de sauvegarde généraux.
  • Utiliser la méthode create_entries pour ajouter des fichiers depuis le répertoire ~/Data vers l’archive.
Veuillez vous référer à la documentation pour mieux comprendre la signification des valeurs d’énumération ParallelCompressionMode. Jouez avec ces valeurs pour obtenir le meilleur résultat explicitement en fonction de vos objectifs et de votre configuration matérielle.

Autres fonctionnalités de l'API Aspose.ZIP pour Python.Net prises en charge

Avec la bibliothèque Aspose.ZIP dans Python.Net, vous pouvez gérer de manière transparente diverses tâches liées aux documents de fichiers ZIP. Que vous ayez besoin de convertir des formats, de fusionner des fichiers, de modifier du contenu ou d'extraire des données, Aspose.ZIP fournit des fonctionnalités complètes pour rationaliser votre flux de travail et améliorer votre productivité.

  

Support and Learning Resources

  
  

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