我只是想在我的工作电脑上编写一个小计时器。有趣的是,计数器太慢了,这意味着它的运行时间比它应该的长。我真的很困惑。延迟越大,更新间隔越小。我的电脑太慢了吗?运行此...时,CPU约为30%... idk。 python3.6.3
import time
def timer(sec):
start = sec
print(sec)
while sec > 0:
sec = sec-0.1 #the smaller this value, the slower
time.sleep(0.1)
print(round(sec,2))
print("Done! {} Seconds passed.".format(start))
start = time.time() #For Testing
timer(10)
print(time.time()-start)
答案 0 :(得分:1)
休眠过程需要系统调用(对内核的调用,触发硬件中断以提供给内核),以及硬件时钟中断,以便在完成后唤醒进程。睡眠可能不是很多CPU计算,但是等待硬件中断和内核来执行进程可能需要多个CPU周期。
我建议你等待达到下一个里程碑所需的时间(通过获取当前时间,将其四舍五入到下一步并获得差异),而不是等待一个恒定的时间单位。
答案 1 :(得分:0)
尝试这种方式,您可以在time.time()
上使用普通运算符import time
start = time.time()
seconds = 5
while True:
if start - time.time() > seconds:
print(seconds + " elapsed.")