24 lines
		
	
	
		
			588 B
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			24 lines
		
	
	
		
			588 B
		
	
	
	
		
			Python
		
	
	
	
	
	
import time
 | 
						|
 | 
						|
 | 
						|
class TimeIt:
 | 
						|
    def __init__(self, name: str, time_logger=None):
 | 
						|
        self.name = name
 | 
						|
        self.logger = time_logger
 | 
						|
        self.timer = None
 | 
						|
        self.end_timer = None
 | 
						|
 | 
						|
    def __enter__(self):
 | 
						|
        self.timer = time.perf_counter()
 | 
						|
        return self
 | 
						|
 | 
						|
    @property
 | 
						|
    def dif(self):
 | 
						|
        return self.end_timer - self.timer
 | 
						|
 | 
						|
    def __exit__(self, exc_type, exc_val, exc_tb):
 | 
						|
        if not self.end_timer:
 | 
						|
            self.end_timer = time.perf_counter()
 | 
						|
        if self.logger:
 | 
						|
            self.logger.info(f"{self.dif:.4f} seconds in {self.name}.")
 |