2013-06-20 88 views
3

我正在創建一個代碼,要求程序計算其運行時間,然後顯示時間。它基本上是一個在後臺運行的計時器,我可以調用它來顯示代碼已經運行了多長時間。我該怎麼做呢?如何在python上創建計時器

回答

13

您記錄開始時間,然後再計算開始時間和當前時間之間的差異。

到由於平臺的差異,精密您要使用的timeit.default_timer callable

from timeit import default_timer 

start = default_timer() 

# do stuff 

duration = default_timer() - start 

這讓你在幾秒鐘內掛鐘時間持續時間爲浮動點值。

演示:

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

Th對你的答案非常有幫助。 –

4

這是很容易在Python

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

所得end_time會在幾秒鐘內

0

我已經這樣做了,這可能會幫助你

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) 
+0

而不是嵌套字典,爲什麼不使用自定義類?它會使代碼更具可讀性。 –