You can implement the desired measure_times()
utility as a python context manager. Then the usage will be as below:
with measure_times("block name"):
your code here
A sample implementation measuring only wall time follows:
$ cat measure_times.py
import timeit
class measure_times:
def __init__(self, blockname):
self.blockname = blockname
def __enter__(self):
self.starttime = timeit.default_timer()
def __exit__(self, exc_type, exc_value, traceback):
t = timeit.default_timer() - self.starttime
print('--- Time measurement report: {}: {}s'.format(self.blockname, t))
with measure_times("Integer sum"):
s = 0
for i in range(1000000):
s += i
print(s)
with measure_times("Floating point sum"):
s = 0
for i in range(1000000):
s += i
print(s)
$ python measure_times.py
499999500000
--- Time measurement report: Integer sum: 0.0683062076569s
499999500000
--- Time measurement report: Floating point sum: 0.066034078598s