import time
seconds_per_unit = {"s": 1, "m": 60, "h": 3600, "d": 86400, "w": 604800}
[docs]def get_time_in_secs(s):
"""get_time_in_secs converts the string given to seconds, e.g. 1h is converted to 3600.
:param s: input string of the format "Nu" where N is a number and u is a unit (s/m/h/d/w).
:type s: string
:return: Number of seconds
:rtype: float
"""
return float(s[:-1]) * seconds_per_unit[s[-1]]
[docs]class TimerClass:
"""TimerClass is an object that can help with timing different components of the execution.
:return: TimerClass object
:rtype: object
"""
def __init__(self):
self.tic()
[docs] def tic(self):
"""tic resets the starting time fo the timer. toc() will get seconds past since calling tic().
"""
self.start_time = time.time()
[docs] def toc(self):
"""toc calculates the number of seconds passed since tic() has been called, or object has been created,
whichever is more recent.
:return: elapsed time since time reference
:rtype: float
"""
elapsed = time.time() - self.start_time
return elapsed
[docs] def toc_str(self):
"""toc_str returns the time elapsed in string with 2 digits of precision.
This is for user printing mainly.
:return: number of seconds elapsed with 2 digits of precision.
:rtype: string
"""
elapsed = time.time() - self.start_time
return '{:4.02f}'.format(elapsed)
[docs] def toc_print(self):
"""toc_print prints the value returned by toc_str
:return: number of seconds elapsed with 2 digits of precision.
:rtype: string
"""
print(self.toc_str())
return self.toc()
if __name__ == '__main__':
import random
timer = TimerClass()
timer.tic()
print('starting...')
time.sleep(random.random() * 10)
print('elapsed time:', timer.toc_str())