Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/346.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 这是可靠的倒计时器吗?_Python_Python 2.7_Python 3.x - Fatal编程技术网

Python 这是可靠的倒计时器吗?

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) 我认为你把分

我想创建一个倒计时计时器,从60分钟倒计时到0分钟。我不需要精确。就在10-15秒内。时间睡眠是这项工作的正确任务吗

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)
否则你会使用它,对吗?如果你想走这种风格的路线,那么你也可以继续走下去如果你想走这种风格的路线,那么你也可以继续走下去