mirror of
				https://github.com/fmtlib/fmt.git
				synced 2025-11-03 23:51:41 +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))
 |