#mytimer.py import time resp = 1000 resp_list = range(resp) def timer(func, *pargs, **kargs): start = time.clock() for i in resp_list: ret = func(*pargs, **kargs) elapsed = time.clock() - start return elapsed, ret #timeseqs.py import sys import mytimer resp = 10000 resp_list = range(resp) def for_loop(): res = [] for x in resp_list: res.append(abs(x)) return res def list_comp(): return [abs(x) for x in resp_list] def map_call(): return list(map(abs, resp_list)) def gen_expr(): return list(abs(x) for x in resp_list) def gen_func(): def gen(): for x in resp_list: yield abs(x) return list(gen()) print(sys.version) for test in (for_loop(), list_comp(), map_call(), gen_expr(), gen_func()): elapsed, result = mytimer.timer(test) print('-' * 33) print('%-9s: %.5f => [%s...%s]' % (test.__name__, elapsed, result[0], result[-1]))
3.5.2 (v3.5.2:4def2a2901a5, Jun 26 2016, 10:47:25)
Traceback (most recent call last):
File “/Users/ergo/Development/PycharmProjects/Lutc/timeseqs.py”, line 35, in <module>
elapsed, result = mytimer.timer(test)
File “/Users/ergo/Development/PycharmProjects/Lutc/mytimer.py”, line 10, in timer
ret = func(*pargs, **kargs)
TypeError: ‘list’ object is not callable
Process finished with exit code 1