Guest User

Untitled

a guest
Dec 14th, 2018
63
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.03 KB | None | 0 0
  1. import time
  2. import logging
  3.  
  4. class Timer:
  5. def __init__(self, timed, logger=None):
  6. self.logger = logger
  7. self.timed = timed
  8.  
  9. def __enter__(self):
  10. self.start = time.perf_counter()
  11. return self
  12.  
  13. def __exit__(self, *args):
  14. self.end = time.perf_counter()
  15. self.interval = self.end - self.start
  16. if self.logger is not None:
  17. if self.interval < 0.01:
  18. self.logger.debug(f"{self.timed}: {self.interval:0.2E} sec.")
  19. else:
  20. self.logger.debug(f"{self.timed}: {self.interval:0.5f} sec.")
  21.  
  22. # example usage with logging
  23. logging.basicConfig(
  24. handlers=[
  25. logging.StreamHandler(),
  26. # logging.FileHandler("logfile.log", mode='a', encoding='utf8')
  27. ],
  28. format='%(asctime)s %(levelname)s [%(module)s]: %(message)s')
  29. logger = logging.getLogger()
  30. logger.setLevel(logging.DEBUG)
  31.  
  32. with Timer("Time", logger=logger) as t:
  33. # something you wanna time
  34. pass
  35. time.sleep(0.5)
  36.  
  37. # You can also access the time as follow:
  38. print(t.interval)
Add Comment
Please, Sign In to add comment