晚安,
我正在尝试估计 剩余 时间到循环结束;我用过:
start = datetime.now()
progress = 0
for i in range(1000):
#do a few calculations
progress += 1
stop = datetime.now()
execution_time = stop-start
remaining = execution_time * ( 1000 - progress )
print("Progress:", progress, "%, estimated", remaining, "time remaining")
但它不似乎能够正常工作,因为它可以达到几分钟,即使循环总共需要20秒,并且在到达结束时会迅速减少。
如何有效且正确地尝试预测 剩余 时间?
答案 0 :(得分:3)
只需使用const navSlide = () => {
const burger = document.querySelector(".burger");
const nav = document.querySelector(".nav-links");
const navLinks = document.querySelectorAll(".nav-links li");
burger.addEventListener('click', () => {
nav.classList.toggle('nav-active')
navLinks.forEach((link, index) => {
if(link.style.animation) {
link.style.animation = ""
} else {
link.style.animation = `navLinkFade 0.5s ease forwards ${index / 7 + .4}s`;
}
});
burger.classList.toggle('toggle');
});
}
navSlide();
软件包:
tqdm
它将为您打印所有内容:
from tqdm import tqdm
for i in tqdm(range(10000)):
dosomthing()
答案 1 :(得分:0)
您可以使用{3.3}中提供的time.perf_counter()
,而不是将datetime.datetime.now()
用于此类事件。来自文档:
返回性能计数器的值(以小数秒为单位), 即具有最高可用分辨率的时钟来测量短路 持续时间。它确实包括睡眠期间经过的时间 全系统。返回值的参考点未定义, 这样只有连续调用结果之间的差异 是有效的。
此外,您可以使用回车而不是换行进行打印,以便将进度报告打印在一行上。这是一个源自您的代码的简短演示。
from time import sleep, perf_counter
fmt = " Progress: {:>3}% estimated {:>3}s remaining"
num = 1000
start = perf_counter()
for i in range(1, num + 1):
# Simulate doing a few calculations
sleep(0.01)
stop = perf_counter()
remaining = round((stop - start) * (num / i - 1))
print(fmt.format(100 * i // num, remaining), end='\r')
print()
根据您的终端(和Python版本),您可能还需要将flush=True
关键字arg添加到print
调用,以便在发布进度报告时将其打印出来。
答案 2 :(得分:0)
我认为在这一行:
remaining = execution_time * ( 1000 - progress )
你应该划分execution_time / progress,因为你想知道完成1%进度需要多长时间。
remaining = execution_time/progress * ( 1000 - progress )
答案 3 :(得分:-1)
您对剩余时间的计算是错误的。如果execution_time
步骤需要progress
。那么1000
步骤需要多少钱?
简单的交叉乘法为您提供总时间。从已经过去的时间中减去它,这将为您提供剩余的时间。
remaining_time = execution_time * 1000 / progress - execution_time
percent_complete = (progress / 1000) * 100 #You can simplify this if you like
print("Progress:", percent_complete , "%, Estimated", remaining_time, "time remaining")
此外,您的变量execution_time_1
永远不会被定义