mirror of
				https://github.com/fmtlib/fmt.git
				synced 2025-11-04 08:01:40 +01:00 
			
		
		
		
	
		
			
	
	
		
			36 lines
		
	
	
		
			725 B
		
	
	
	
		
			Python
		
	
	
	
	
	
		
		
			
		
	
	
			36 lines
		
	
	
		
			725 B
		
	
	
	
		
			Python
		
	
	
	
	
	
| 
								 | 
							
								# A with statement based timer.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								from __future__ import print_function
							 | 
						||
| 
								 | 
							
								from contextlib import contextmanager
							 | 
						||
| 
								 | 
							
								import timeit
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class Timer:
							 | 
						||
| 
								 | 
							
								  """
							 | 
						||
| 
								 | 
							
								  A with statement based timer.
							 | 
						||
| 
								 | 
							
								  Usage:
							 | 
						||
| 
								 | 
							
								    t = Timer()
							 | 
						||
| 
								 | 
							
								    with t:
							 | 
						||
| 
								 | 
							
								      do_something()
							 | 
						||
| 
								 | 
							
								    time = t.time
							 | 
						||
| 
								 | 
							
								  """
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								  def __enter__(self):
							 | 
						||
| 
								 | 
							
								    self.start = timeit.default_timer()
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  def __exit__(self, type, value, traceback):
							 | 
						||
| 
								 | 
							
								    finish = timeit.default_timer()
							 | 
						||
| 
								 | 
							
								    self.time = finish - self.start
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								@contextmanager
							 | 
						||
| 
								 | 
							
								def print_time(*args):
							 | 
						||
| 
								 | 
							
								  """
							 | 
						||
| 
								 | 
							
								  Measures and prints the time taken to execute nested code.
							 | 
						||
| 
								 | 
							
								  args: Additional arguments to print.
							 | 
						||
| 
								 | 
							
								  """
							 | 
						||
| 
								 | 
							
								  t = Timer()
							 | 
						||
| 
								 | 
							
								  print(*args)
							 | 
						||
| 
								 | 
							
								  with t:
							 | 
						||
| 
								 | 
							
								    yield
							 | 
						||
| 
								 | 
							
								  print(*args, end=' ')
							 | 
						||
| 
								 | 
							
								  print('finished in {0:.2f} second(s)'.format(t.time))
							 |