Python Counter太慢了

时间:2017-11-23 10:00:51

标签: python-3.x

我只是想在我的工作电脑上编写一个小计时器。有趣的是,计数器太慢了,这意味着它的运行时间比它应该的长。我真的很困惑。延迟越大,更新间隔越小。我的电脑太慢了吗?运行此...时,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)

2 个答案:

答案 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.")