有没有办法在没有总进程数的情况下计算进度?
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)
我觉得这是一件很难的事情。 总的来说,我知道我需要总计数和当前计数才能获得某些东西的速率。 但是在这种情况下,我无法获得总数。
例如,有两份工作,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)