fork download
  1. # A stopwatch class.
  2.  
  3. from datetime import datetime
  4. from time import perf_counter as _tic
  5.  
  6. class Stopwatch:
  7. def __init__(self):
  8. self.reset()
  9.  
  10. def reset(self):
  11. self.toc = 0
  12. self.run = False
  13.  
  14. def start(self):
  15. assert not self.run
  16. self.run = True
  17. self.toc = self.elapsed()
  18.  
  19. def stop(self):
  20. assert self.run
  21. self.toc = self.elapsed()
  22. self.run = False
  23.  
  24. def elapsed(self):
  25. return _tic() - self.toc if self.run else self.toc
  26.  
  27. def __str__(self):
  28. d = datetime.fromtimestamp(self.elapsed()).time()
  29. f = int(d.microsecond/1E+6*100)
  30. return '{:02d}:{:02d}:{:02d}.{:02d}'.format(d.hour,d.minute,d.second,f)
  31.  
  32. # .
  33.  
  34. from time import sleep
  35.  
  36. sw = Stopwatch()
  37. print(sw) # = 00.00
  38. sw.start()
  39. print(sw) # ~ 00.00
  40. sleep(0.5)
  41. print(sw) # ~ 00.50
  42.  
  43. sw.stop()
  44. sleep(0.5)
  45. print(sw) # ~ 00.50
  46. sw.start()
  47. sleep(0.5)
  48. print(sw) # ~ 01.00
  49.  
  50. sw.reset()
  51. print(sw) # = 00.00
  52. sw.start()
  53. sleep(1)
  54. print(sw) # ~ 01.00
Success #stdin #stdout 0.03s 9988KB
stdin
Standard input is empty
stdout
00:00:00.00
00:00:00.00
00:00:00.50
00:00:00.50
00:00:01.00
00:00:00.00
00:00:01.00