【问题标题】:Single file unzip optimization using python使用python进行单文件解压优化
【发布时间】:2021-07-24 12:21:39
【问题描述】:

我有一个包含 1 个文件的大 zip 文件。 我想将该文件解压缩到给定目录以进行进一步处理并使用以下代码:

def unzip(zipfile: ZipFile, filename: str, dest: str):
    ZipFile.extract(zipfile, filename, dest)

这个函数被调用:

 with ZipFile(file_path, "r") as zip_source:
    unzip(zip_source, zip_source.infolist()[0], extract_path) # extract path is correctly defined earlier in the code

似乎解压缩一个大文件需要很长时间(文件大小 > 500 Mb),我想优化这个解决方案。

我发现的所有优化都是基于多处理的,以便更快地提取多个文件,但是,我的 zip 仅包含一个文件,因此多处理似乎不是答案。

【问题讨论】:

  • 要求软件/库推荐的问题通常过于宽泛,不适合本网站,因为任何答案通常都只是一种意见。
  • 我不是在寻找库,而是在寻找优化解决方案(即使是伪代码)
  • 您可以控制文件的创建吗?你不能把文件分成多个吗?当然,这将是处理时间(如果您假定使用多处理)会损害存储。此外,您可以将文件提取过程外包给外部程序,例如 7zip。
  • 不,这是第三方提供的文件。

标签: python python-3.x optimization zip unzip


【解决方案1】:

只要文件实际上是使用常用的解压缩算法 LZ77/LZW/LZSS 压缩的,就不能并行解压缩包含 1 个文件的 zip 文件。这些算法本质上是顺序的。

此外,众所周知,这些解压缩方法很慢(通常比从存储设备读取文件慢得多)。这主要是因为算法本身:它们的复杂性以及大多数主流处理器无法大幅加快计算速度的事实。

因此,没有办法更快地解压文件,尽管您可能会发现使用另一个库实现的速度稍快。

【讨论】:

  • 谢谢你的回答我担心是这种情况。
猜你喜欢
  • 2018-12-23
  • 1970-01-01
  • 1970-01-01
  • 2015-11-22
  • 1970-01-01
  • 2011-09-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多