timer.py 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. # Copyright (c) Facebook, Inc. and its affiliates.
  2. # Copyright © Alibaba, Inc. and its affiliates.
  3. import datetime
  4. import time
  5. class Timer(object):
  6. def __init__(self):
  7. """Recorder of time consumption.
  8. """
  9. self.reset()
  10. @property
  11. def average_time(self):
  12. return self.total_time / self.calls if self.calls > 0 else 0.0
  13. def tic(self):
  14. # using time.time instead of time.clock because time time.clock
  15. # does not normalize for multithreading
  16. self.start_time = time.time()
  17. def toc(self, average=True):
  18. self.add(time.time() - self.start_time)
  19. if average:
  20. return self.average_time
  21. else:
  22. return self.diff
  23. def add(self, time_diff):
  24. self.diff = time_diff
  25. self.total_time += self.diff
  26. self.calls += 1
  27. def reset(self):
  28. self.total_time = 0.0
  29. self.calls = 0
  30. self.start_time = 0.0
  31. self.diff = 0.0
  32. def avg_time_str(self):
  33. time_str = str(datetime.timedelta(seconds=self.average_time))
  34. return time_str
  35. def get_time_str(time_diff):
  36. time_str = str(datetime.timedelta(seconds=time_diff))
  37. return time_str