Python 这是可靠的倒计时器吗?
我想创建一个倒计时计时器,从60分钟倒计时到0分钟。我不需要精确。就在10-15秒内。时间睡眠是这项工作的正确任务吗Python 这是可靠的倒计时器吗?,python,python-2.7,python-3.x,Python,Python 2.7,Python 3.x,我想创建一个倒计时计时器,从60分钟倒计时到0分钟。我不需要精确。就在10-15秒内。时间睡眠是这项工作的正确任务吗 while(hour + minute != 0): if minute == 0: minute = 59 hour = hour - 1 else: minute = minute - 1 time.sleep(1) 我认为你把分
while(hour + minute != 0):
if minute == 0:
minute = 59
hour = hour - 1
else:
minute = minute - 1
time.sleep(1)
我认为你把分和秒区分开来是把事情复杂化了。使用基本单位(秒),然后向后循环总数,并在那里应用延迟,例如:
for remaining in range(60 * 60, 0, -1):
mins, secs = divmod(remaining, 60)
# Probably do something other than print that should take a
# trivial amount of time... if it takes 10 seconds then things
# will start to look weird
print('{}mins and {}secs remaining'.format(mins, secs))
time.sleep(1)
我认为你把分和秒区分开来是把事情复杂化了。使用基本单位(秒),然后向后循环总数,并在那里应用延迟,例如:
for remaining in range(60 * 60, 0, -1):
mins, secs = divmod(remaining, 60)
# Probably do something other than print that should take a
# trivial amount of time... if it takes 10 seconds then things
# will start to look weird
print('{}mins and {}secs remaining'.format(mins, secs))
time.sleep(1)
否,time.sleep()
不提供可靠的时间。如果任何类型的信号中断睡眠,它可以短时间睡眠,但也可以长时间睡眠,具体取决于系统负载
我建议您在开始倒计时时存储当前时间,例如使用time.time()
(从历元开始以秒为单位以浮点小数形式返回当前时间):
start\u time=time.time()
然后计算倒计时结束时的时间(当然也是以秒为单位):
target\u time=开始时间+(小时*60+分钟)*60+秒
现在,您可以启动while
循环,检查当前时间是否低于目标时间。如果是这种情况,您可以使用time.sleep(RESOLUTION)
节省CPU时间。您的倒计时将与您选择的分辨率
一样精确:它运行的时间始终大于或等于所需时间,但小于所需时间加上分辨率
。我会选择一个介于0.1和1秒之间的值
以下是完整的代码:
start\u time=time.time()
目标时间=开始时间+(小时*60+分钟)*60+秒
当目标时间
优点是,即使系统负载很高,或者您在while循环中执行的操作耗时很长,倒计时仍然非常准确。No,time.sleep()
不提供可靠的时间。如果任何类型的信号中断睡眠,它可以短时间睡眠,但也可以长时间睡眠,具体取决于系统负载
我建议您在开始倒计时时存储当前时间,例如使用time.time()
(从历元开始以秒为单位以浮点小数形式返回当前时间):
start\u time=time.time()
然后计算倒计时结束时的时间(当然也是以秒为单位):
target\u time=开始时间+(小时*60+分钟)*60+秒
现在,您可以启动while
循环,检查当前时间是否低于目标时间。如果是这种情况,您可以使用time.sleep(RESOLUTION)
节省CPU时间。您的倒计时将与您选择的分辨率
一样精确:它运行的时间始终大于或等于所需时间,但小于所需时间加上分辨率
。我会选择一个介于0.1和1秒之间的值
以下是完整的代码:
start\u time=time.time()
目标时间=开始时间+(小时*60+分钟)*60+秒
当目标时间
优点是,即使系统负载很高,或者您在while循环中执行的操作耗时很长,倒计时仍然非常准确。简单的方法是使用divmod。这个想法是在使用睡眠1秒后减少计数器
def counter(total_seconds):
for rem in range(total_seconds, 0, -1):
mins, secs = divmod(rem, 60)
print('{}mins and {}secs remaining'.format(mins, secs))
time.sleep(1)
简单的方法是使用divmod。这个想法是在使用睡眠1秒后减少计数器
def counter(total_seconds):
for rem in range(total_seconds, 0, -1):
mins, secs = divmod(rem, 60)
print('{}mins and {}secs remaining'.format(mins, secs))
time.sleep(1)
time.sleep
可以暂停脚本,但在其他方面它非常依赖于负载。最好使用基于系统时间的东西,即time.localtime()
。嗯。。。大概它不只是做了与时间等价的事情。sleep(60*60)
否则你会使用它,对吧?time。sleep
可以暂停脚本,但是它非常依赖于负载。最好使用基于系统时间的东西,即time.localtime()
。嗯。。。想必它所做的不仅仅是时间的等价物。睡眠(60*60)
否则你会使用它,对吗?如果你想走这种风格的路线,那么你也可以继续走下去如果你想走这种风格的路线,那么你也可以继续走下去