|
|
|
@ -16,6 +16,7 @@ Simple timer utility. |
|
|
|
|
This module is part of wpylib project. |
|
|
|
|
""" |
|
|
|
|
|
|
|
|
|
import sys |
|
|
|
|
import time |
|
|
|
|
|
|
|
|
|
class timer: |
|
|
|
@ -38,6 +39,12 @@ class block_timer(object): |
|
|
|
|
|
|
|
|
|
with block_timer() as t: |
|
|
|
|
<code> |
|
|
|
|
|
|
|
|
|
Fancy options are available to record the timing result, specified when |
|
|
|
|
initializing the new object: |
|
|
|
|
|
|
|
|
|
* report=block_timer.writeout_file :: writes out the timing result to a file |
|
|
|
|
* report=block_timer.writeout_dict :: saves the timing result to a dict-like element |
|
|
|
|
""" |
|
|
|
|
@staticmethod |
|
|
|
|
def writeout_file(out): |
|
|
|
@ -49,21 +56,23 @@ class block_timer(object): |
|
|
|
|
return wrt_dict |
|
|
|
|
#return lambda tm: rec.__setitem__(key, tm) |
|
|
|
|
|
|
|
|
|
@staticmethod |
|
|
|
|
def bt_file(fobj): |
|
|
|
|
@classmethod |
|
|
|
|
def bt_file(cls, fobj): |
|
|
|
|
"""An object factory to report the timing to a text file. |
|
|
|
|
""" |
|
|
|
|
if isinstance(fobj, basestring): |
|
|
|
|
from wpylib.iofmt.text_output import text_output |
|
|
|
|
out = text_output(fobj) |
|
|
|
|
else: |
|
|
|
|
out = fobj |
|
|
|
|
return block_timer(report=block_timer.writeout_file(out)) |
|
|
|
|
return cls(report=block_timer.writeout_file(out)) |
|
|
|
|
|
|
|
|
|
@staticmethod |
|
|
|
|
def bt_dict(rec, key): |
|
|
|
|
return block_timer(report=block_timer.writeout_dict(rec, key)) |
|
|
|
|
@classmethod |
|
|
|
|
def bt_dict(cls, rec, key): |
|
|
|
|
return cls(report=block_timer.writeout_dict(rec, key)) |
|
|
|
|
|
|
|
|
|
def __init__(self, report=None): |
|
|
|
|
if report == None: report = block_timer.writeout_file(sys.stdout) |
|
|
|
|
if report is None: report = block_timer.writeout_file(sys.stdout) |
|
|
|
|
self.report = report |
|
|
|
|
|
|
|
|
|
def __enter__(self): |
|
|
|
|