timer.py 871 B

1234567891011121314151617181920212223242526272829303132333435
  1. import time
  2. class Timer:
  3. def __init__(self):
  4. self.start = time.time()
  5. self.records = {}
  6. self.total = 0
  7. def elapsed(self):
  8. end = time.time()
  9. res = end - self.start
  10. self.start = end
  11. return res
  12. def record(self, category, extra_time=0):
  13. e = self.elapsed()
  14. if category not in self.records:
  15. self.records[category] = 0
  16. self.records[category] += e + extra_time
  17. self.total += e + extra_time
  18. def summary(self):
  19. res = f"{self.total:.1f}s"
  20. additions = [x for x in self.records.items() if x[1] >= 0.1]
  21. if not additions:
  22. return res
  23. res += " ("
  24. res += ", ".join([f"{category}: {time_taken:.1f}s" for category, time_taken in additions])
  25. res += ")"
  26. return res