blob: 7447ceb1c1097de1de16f69411441dcd30f90c57 [file] [log] [blame]
# Copyright lowRISC contributors.
# Licensed under the Apache License, Version 2.0, see LICENSE for details.
# SPDX-License-Identifier: Apache-2.0
import time
class Timer:
'''A timer to keep track of how long jobs have been running
This has a notion of start time (the time when the object was constructed),
together with a time when the results should next be printed.
'''
print_interval = 5
def __init__(self):
self.start = time.monotonic()
self.next_print = self.start + Timer.print_interval
self.first_print = True
def period(self):
'''Return the float time in seconds since start'''
return time.monotonic() - self.start
def hms(self):
'''Get the time since start in hh:mm:ss'''
period = self.period()
secs = int(period + 0.5)
mins = secs // 60
hours = mins // 60
return '{:02}:{:02}:{:02}'.format(hours, mins % 60, secs % 60)
def check_time(self):
'''Return true if we have passed next_print.
If so, increment next_print by print_interval unless the result would
be in the past, in which case set it to the current time plus
print_interval.
'''
now = time.monotonic()
if self.first_print:
self.first_print = False
return True
if now < self.next_print:
return False
self.next_print += Timer.print_interval
if self.next_print <= now:
self.next_print = now + Timer.print_interval
return True