Skip to content

Instantly share code, notes, and snippets.

@yuyay
Created October 24, 2014 19:41

Revisions

  1. yuyay created this gist Oct 24, 2014.
    76 changes: 76 additions & 0 deletions zikan.py
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,76 @@
    #! 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