如何在python上创建一个计时器

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/17211188/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-19 00:46:50  来源:igfitidea点击:

How to create a timer on python

python

提问by jacob poole

I am creating a code that requires the program to time how long it runs for and then displays the time. it is basically a timer that runs in the background and I can call upon it to display how long the code has been running for. How do I do this?

我正在创建一个代码,要求程序计算它运行的时间,然后显示时间。它基本上是一个在后台运行的计时器,我可以调用它来显示代码运行了多长时间。我该怎么做呢?

采纳答案by Martijn Pieters

You record the start time, then later on calculate the difference between that start time and the current time.

您记录开始时间,然后计算该开始时间与当前时间之间的差异。

Due to platform differences, for precision you want to use the timeit.default_timercallable:

由于平台差异,为了精确起见,您希望使用timeit.default_timercallable

from timeit import default_timer

start = default_timer()

# do stuff

duration = default_timer() - start

This gives you a wall-clock time duration in seconds as a floating point value.

这为您提供了以秒为单位的挂钟持续时间作为浮点值。

Demo:

演示:

>>> from timeit import default_timer
>>> start = default_timer()
>>> # Martijn reads another post somewhere
... 
>>> print default_timer() - start
19.1996181011

回答by Aswin Murugesh

This is easy in python

这在python中很容易

import time
start_time=time.time()
#do something
end_time=time.time()-start_time

The resultant end_timewill be in seconds

结果end_time将在几秒钟内

回答by user3475190

I have done this, This may help you

我已经这样做了,这可能对你有帮助

from timeit import default_timer

timerPool = {}
TIMER_RUNNING = 1
TIMER_STOPPED = 0
TIMER_IDLE = 2


"""
Initilialize the timer like below if any new timer to be added
"""
"""
required initialization for "eightSecTimer_Id" timer
"""
timerPool['eightSecTimer_Id'] = {}
timerPool['eightSecTimer_Id']['state'] = TIMER_IDLE
timerPool['eightSecTimer_Id']['start'] = 0
timerPool['eightSecTimer_Id']['duration'] = 0
timerPool['eightSecTimer_Id']['time'] = 0

"""
required initialization for "fiveSecTimer_Id" timer
"""
timerPool['fiveSecTimer_Id'] = {}
timerPool['fiveSecTimer_Id']['state'] = TIMER_IDLE
timerPool['fiveSecTimer_Id']['start'] = 0
timerPool['fiveSecTimer_Id']['duration'] = 0
timerPool['fiveSecTimer_Id']['time'] = 0

"""
Interface to start the timer
"""
def StartTimer(Id,time):
    timerPool[Id]['time'] = time
    timerPool[Id]
    if (timerPool[Id]['state'] == TIMER_IDLE) or (timerPool[Id]['state'] == TIMER_STOPPED):
        timerPool[Id]['start'] = default_timer()
        timerPool[Id]['state'] = TIMER_RUNNING
    return timerPool[Id]['state']

"""
Interface to get the timer status.
Return "TIMER_STOPPED" when timer completed
Return "TIMER_IDLE" after timer completed on consecutive call of this function
"""

def GetTimerState(Id):
    time = timerPool[Id]['time']
    if timerPool[Id]['state'] == TIMER_RUNNING:
        timerPool[Id]['duration'] = default_timer() - timerPool[Id]['start']
    else:
        None
    if timerPool[Id]['state'] == TIMER_STOPPED:
        timerPool[Id]['state'] = TIMER_IDLE

    if  timerPool[Id]['duration'] >= time:
        timerPool[Id]['state'] = TIMER_STOPPED
        timerPool[Id]['duration'] = 0
    return timerPool[Id]['state'] 

"""
Below is how to use.
"""
StartTimer('fiveSecTimer_Id',5)
StartTimer('eightSecTimer_Id',8)

while True:
    if GetTimerState('fiveSecTimer_Id') == TIMER_STOPPED:
        print "5 sec Timer Stopped"
    if GetTimerState('eightSecTimer_Id') == TIMER_STOPPED:
        print "8 sec Timer Stopped"        
    sleep (.5)