有没有办法在没有总进程数的情况下计算进度?

Is there a way to calculate progress rate without total process count?

我觉得这是一件很难的事情。 总的来说,我知道我需要总计数和当前计数才能获得某些东西的速率。 但是在这种情况下,我无法获得总数。

例如,有两份工作,A和B。 他们的整个过程将始终是随机设置的。 另外,我无法在作业结束前获取作业的总进程数。

我有一种方法可以设置每个作业的具体费率,比如如果 A 完成,设置费率 50%。 但是在这种情况下,A 的计数是 10,B 的计数是 1000,会产生奇怪的结果。 虽然总计数为 1010,但 10 个过程完成了 50%。 有点奇怪。

所以,我想为用户提供更自然的进步率。但我没有总进程数。 是否有任何有用的方法替代通用百分比计算?

如果你想知道你总共有多少进度,而不知道总进度有多少,这在逻辑上是不可能的

但是,您可以

  • 估计一下
  • 保留历史数据
  • 假设最大值,当它更快时让用户感到惊讶

改为显示进度速率

  • 在您的进程开始时取当前时间并减去您再次检查时的时间
  • 将完成的作业除以该数量得到 jobs/second

大致

rate = jobs_completed / (time_now - time_start)

您也可以在一些 window 上执行此操作,但您需要在 window 开始时记录时间和完成的作业数量,然后将两者相减以获得你那个时代的工作 window

rate_windowed = (jobs_completed - jobs_previous) / (time_now - time_previous)