Created
October 24, 2014 19:41
-
-
Save yuyay/aa2b5992fa1fa82214de to your computer and use it in GitHub Desktop.
Measure elapsed time of execution
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#! encoding=UTF-8 | |
""" | |
zikan: a class of measuring elasped time | |
""" | |
from datetime import datetime, timedelta | |
class Zikan(object): | |
""" | |
Zikan class | |
Example | |
------- | |
>>> z = Zikan().timer_start() # generate object and start timer | |
>>> z.timer_stop() # after some processes, stop timer | |
>>> z.get_total_seconds() # get elapsed seconds | |
""" | |
def __init__(self): | |
self.timer_reset() | |
def timer_start(self): | |
""" | |
start timer | |
Returns | |
------- | |
self : object | |
Zikan object | |
""" | |
self.start_date = datetime.now() | |
return self | |
def timer_stop(self): | |
""" | |
stop timer | |
""" | |
if self.start_date: | |
diff = datetime.now() - self.start_date | |
self.elapsed_date += diff | |
self.start_date = None | |
else: | |
raise ZikanError("Need to execute timer_start() before stopping.") | |
def timer_reset(self): | |
""" | |
reset timer | |
""" | |
self.start_date = None | |
self.elapsed_date = timedelta() | |
def get_total_seconds(self): | |
""" | |
return total elapsed seconds | |
""" | |
return self.elapsed_date.total_seconds() | |
def get_total_minutes(self): | |
""" | |
return total elapsed minutes | |
""" | |
return 1.0 * self.elapsed_date.total_seconds() / 60 | |
def get_total_hours(self): | |
""" | |
return total elapsed hours | |
""" | |
return 1.0 * self.elapsed_date.total_seconds() / 3600 | |
class ZikanError(Exception): | |
def __init__(self, message): | |
self.message = message | |
def __str__(self): | |
return self.message |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment