Python 估算拉链大小/创建时间

Python 估算拉链大小/创建时间,python,zip,time-estimation,Python,Zip,Time Estimation,我需要使用Python zipfile模块或unix命令行实用程序按需创建ZIP存档 要压缩的资源通常大于1GB,不一定对压缩友好 如何有效地估计其创建时间/大小?我建议您测量生成特定大小的拉链所需的平均时间。然后根据该度量值计算估算值。然而,我认为,如果你不知道数据压缩得有多好,估计无论如何都是非常粗略的。如果要压缩的数据每次都有一个非常相似的“配置文件”,您可能会做出更好的预测。从大文件中提取一堆小部分。可能每个64k的64块。随机选择 连接数据,压缩数据,测量时间和压缩比。由于您随机选择了

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

要压缩的资源通常大于1GB,不一定对压缩友好


如何有效地估计其创建时间/大小?

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

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

连接数据,压缩数据,测量时间和压缩比。由于您随机选择了文件的某些部分,所以很有可能压缩了数据的代表性子集

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

如果您使用该方法将文件写入存档,您可以执行以下操作:

  • 获取要压缩的文件及其相对大小的列表
  • 向归档文件写入一个文件,并记录所需时间
  • 根据写入的文件数、文件大小以及剩余的文件量计算ETA

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

    如果可以从python模块获得进度回调,我建议您找出每秒处理的字节数(只需在文件中存储第二个开始时的位置和结束时的位置)。当您有关于计算机运行速度的数据时,您可以将其保存下来,并将其用作下一个zip文件的基础。(我通常在显示时间进度之前收集大约5个样本)


    使用此方法可以为您提供更多样本,因此您需要对其进行平均。如果您制作一个包含大量文件的zip文件,则会出现这种情况,因为与一个大文件相比,压缩许多小文件时,zip往往会减慢速度。

    这是一个比我的更好的主意。+1.为了澄清一下,您想估算cre吗在创建文件之前或在运行中?提前?ZIP请求排队。在这种情况下,忽略我的答案并接受Nils':-)