Tổng quan

Thư viện của chúng tôi cho phép nén nhiều luồng đối với một số định dạng. Điều này cho phép bạn tăng đáng kể tốc độ nén dữ liệu.

Song song lưu trữ BZIP2, LZIP và Xperia

Số lượng luồng nén có thể được đặt thông qua thuộc tính "luồng nén" của lớp cài đặt tương ứng. Giá trị mặc định là 1 và do đó việc nén được thực hiện trên một luồng. Tuy nhiên, nếu bạn đặt giá trị lớn hơn một, thuật toán sẽ sử dụng số lõi xử lý tương ứng

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

Trong các ví dụ này, đoạn mã Python thực hiện các hành động tương tự để tạo kho lưu trữ, chỉ khác nhau ở định dạng nén được sử dụng. Họ thường làm theo các bước sau:

  • Tạo một đối tượng cài đặt cụ thể cho định dạng lưu trữ.
  • Đặt số lượng luồng song song để nén.
  • Một đối tượng lưu trữ được tạo trong ngữ cảnh với, điều này đảm bảo tự động đóng kho lưu trữ sau khi hoàn tất các thao tác.
  • Chỉ định nguồn dữ liệu sẽ được thêm vào kho lưu trữ.
  • Lưu kho lưu trữ ở định dạng thích hợp bằng cách sử dụng các cài đặt đã định cấu hình.

Nén LZMA2 và đa luồng trong kho lưu trữ 7Z

Ví dụ này minh họa cách tạo một kho lưu trữ 7z bằng tệp data.bin. Chúng tôi sử dụng thuật toán nén LZMA2 với bốn luồng để nén dữ liệu một cách hiệu quả.

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

Mã này tạo bản lưu trữ 7z bằng cách đọc dữ liệu từ tệp data.bin, sử dụng SevenZipLZMA2CompressionSettings thay vì cài đặt cho Bzip2, Lzip hoặc Xperia và thuật toán nén LZMA2 với bốn luồng để nén. Nó sử dụng phương thức create_entry của SevenZipArchive thay vì phương thức set_source.

Tăng tốc độ lưu trữ ZIP bằng tính năng nén song song

Việc tạo một kho lưu trữ ZIP có thể được thực hiện song song ở cấp độ đầu vào. Để thực hiện việc này, hãy sử dụng phiên bản ParallelOptions và các thuộc tính của nó

    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)

Các tính năng chính là:

  • Sử dụng ParallelOptions để định cấu hình nén song song trong bộ nhớ.
  • Sử dụng ArchiveSaveOptions cho cài đặt lưu chung.
  • Sử dụng phương thức create_entries để thêm tệp từ thư mục ~/Data vào kho lưu trữ.
Vui lòng tham khảo tài liệu để hiểu rõ hơn ý nghĩa của các giá trị liệt kê ParallelCompressionMode. Hãy sử dụng các giá trị này để đạt được kết quả tốt nhất một cách rõ ràng cho mục đích và cấu hình phần cứng của bạn.

Aspose.ZIP được hỗ trợ khác cho các tính năng API Python.Net

Với thư viện Aspose.ZIP trong Python.Net, bạn có thể xử lý liền mạch các tác vụ khác nhau liên quan đến tài liệu tệp ZIP. Cho dù bạn cần chuyển đổi định dạng, hợp nhất tệp, chỉnh sửa nội dung hay trích xuất dữ liệu, Aspose.ZIP đều cung cấp chức năng toàn diện để hợp lý hóa quy trình làm việc của bạn và nâng cao năng suất.

  

Support and Learning Resources

  
  

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