Python中的快速zip解密

问题描述 投票:0回答:2

我有一个使用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。
  • CPU的使用率不高,甚至没有一个内核。
  • 压缩后打开的文件大约为80MB,因此磁盘读取也不应该成为一个缓慢的问题。

这使我认为瓶颈可能是最不可见的参数:RAM带宽。但是我不知道该如何测量。

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

解密非常慢,因为它是在本机Python中而不是C中实现的。

我猜想,如果它使用的是本机Python,那么它甚至都没有使用OpenGL加速,因此还有一点要慢。同样,由于CPU使用率低,我也对这种方法的工作方式感到好奇。

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

python zip unzip
2个回答
0
投票

我进行了一些研究,发现以下内容:

您可以“ 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?


0
投票

有这个python的库,可以处理没有内存麻烦的压缩文件。

© www.soinside.com 2019 - 2024. All rights reserved.