【问题标题】:Estimating zip size/creation time估计 zip 大小/创建时间
【发布时间】:2009-04-20 10:23:56
【问题描述】:

我需要使用 Python zipfile 模块或 unix 命令行实用程序按需创建 ZIP 存档。

要压缩的资源通常 > 1GB,不一定适合压缩。

我如何有效地估计它的创建时间/大小?

【问题讨论】:

  • 澄清一下,您是想在创建文件之前还是即时估计创建时间和大小?
  • 提前。 ZIP 请求已排队。
  • 在这种情况下,忽略我的回答并接受 Nils' :-)

标签: python zip time-estimation


【解决方案1】:

从大文件中提取一堆小部分。可能有 64 个 64k 的块。随机选择。

连接数据,对其进行压缩,测量时间和压缩率。由于您随机选择了文件的一部分,因此您压缩了具有代表性的数据子集。

现在您所要做的就是根据您的测试数据的时间来估计整个文件的时间。

【讨论】:

  • 这是一个比我更好的主意。 +1。
【解决方案2】:

我建议您测量制作特定尺寸的拉链所需的平均时间。然后根据该度量计算估计值。但是,如果您不知道数据的压缩程度,我认为无论如何估计都会非常粗略。如果您要压缩的数据每次都具有非常相似的“配置文件”,您可能会做出更好的预测。

【讨论】:

    【解决方案3】:

    如果有可能从 python 模块获取进度回调,我建议找出每秒处理了多少字节(通过简单地存储文件中第二个开始的位置以及结束时的位置) .当您拥有有关计算机速度的数据时,您当然可以保存它,并将其用作下一个 zip 文件的基础。 (我通常在显示时间预测之前收集大约 5 个样本)

    使用此方法可以为您提供Microsoft minutes ,因此当您获得更多样本时,您需要对其进行平均。如果您制作的 zip 文件包含大量文件,情况尤其如此,因为与 1 个大文件相比,压缩许多小文件时 ZIP 往往会变慢。

    【讨论】:

      【解决方案4】:

      如果您使用ZipFile.write() 方法将文件写入存档,您可以执行以下操作:

      1. 获取要压缩的文件列表及其相对大小
      2. 将一个文件写入存档并计算花费的时间
      3. 根据写入的文件数量、文件大小和剩余文件数量计算 ETA。

      如果您只压缩一个非常大的文件,这将不起作用。我自己从来没有使用过 zip 模块,所以我不确定它是否可以工作,但是对于少量的大文件,也许你可以使用 ZipFile.writestr() 函数并读入/压缩你的文件块?

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-05-20
        • 1970-01-01
        • 1970-01-01
        • 2023-03-21
        • 2011-03-05
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多