python 中的快速 zip 解密

Fast zip decryption in python

我有一个使用 zipfile 处理 zip 文件的程序。它适用于 iterator,因为未压缩的文件大于 2GB,这可能会成为内存问题。

with zipfile.Zipfile(BytesIO(my_file)) as myzip:
    for file_inside in myzip.namelist():
        with myzip.open(file_inside) as file:
            # Process here
            # for loop ....

然后我注意到这个过程处理我的文件的速度非常慢。我可以理解这可能需要一些时间,但至少它应该使用我的机器资源:假设 python 进程应该 100% 使用它所在的核心。

既然没有,我开始研究可能的根本原因。我不是压缩方面的专家,所以首先考虑基本的东西:

这让我认为瓶颈可能存在于最不可见的参数中:RAM 带宽。但是我不知道如何测量这个。

然后在软件方面,我在zipfile docs上找到:

Decryption is extremely slow as it is implemented in native Python rather than C.

我想如果它使用原生 Python,它甚至没有使用 OpenGL 加速,所以速度慢是另一点。我也很好奇这种方法是如何工作的,同样是因为 CPU 使用率低。

所以我的问题当然是,我如何以类似的方式工作(没有在 RAM 中拥有完整的解压缩文件),但在 Python 中以更快的方式解压缩? 是否有另一个库或另一种方法来克服这种缓慢?

我做了一些研究并发现了以下内容:

您可以 "pip install czipfile",更多信息请访问 https://pypi.org/project/czipfile/

另一个解决方案是使用 "Cython",python -https://www.reddit.com/r/Python/comments/cksvp/whats_a_python_zip_library_with_fast_decryption/

的变体

或者您可以外包给 7-Zip,如下所述:Faster alternative to Python's zipfile module?

python 有这个库可以处理压缩文件而不用担心内存问题。

引自文档:

Buzon - ZipFly

ZipFly is a zip archive generator based on zipfile.py. It was created by Buzon.io to generate very large ZIP archives for immediate sending out to clients, or for writing large ZIP archives without memory inflation.

从未使用过但可以提供帮助。