This is a decorator I created to log the time it takes to run an arbitrary function:
import time import logging logging.basicConfig(format='%(levelname)s:%(message)s', level=logging.DEBUG) # first, define the decorator def time_log(function): def log_wrapper(*args, **kwargs): t0 = time.time() output = function(*args, **kwargs) elapsed = time.time() - t0 if elapsed < 60: elapsed_str = '%.2f seconds' % (elapsed) else: elapsed_str = time.strftime('%H:%M:%S', time.gmtime(elapsed)) logging.info('%s took %s' % (function.__name__, elapsed_str, )) return output return log_wrapper # now you can use it: # start by decorating a function @time_log def foo(N): import sys for i in range(N): sys.stdout.write("\r%d" % i) sys.stdout.flush() time.sleep(0.001) sys.stdout.write("\n") # then use it as you'd normally do! foo(1000)
No comments:
Post a Comment