Skip to content

Instantly share code, notes, and snippets.

@yuyay
Created October 24, 2014 19:41
Show Gist options
  • Save yuyay/aa2b5992fa1fa82214de to your computer and use it in GitHub Desktop.
Save yuyay/aa2b5992fa1fa82214de to your computer and use it in GitHub Desktop.
Measure elapsed time of execution
#! 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