如何在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
How to create a timer on 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)

