Форум сайта python.su
0
Итак, наткнулся я в книге М. Лутца на такой вот пример:
#реализация утилиты timer собственноручно #модуль mytimer ]import time, sys trace = lambda *args: None # or print timefunc = time.clock if sys.platform == 'win32' else time.time def timer(func, *pargs, _reps=1000, **kargs): trace(func, pargs, kargs, _reps) start = timefunc() for i in range(_reps): ret = func(*pargs, **kargs) elapsed = timefunc() - start return (elapsed, ret) def best(func, *pargs, _reps=50, **kargs): best = 2 ** 32 for i in range(_reps): (time, ret) = timer(func, *pargs, _reps=1, **kargs) if time < best: best = time return (best, ret)
#модуль timeseqs import sys, mytimer reps = 10000 repslist = range(reps) def forLoop(): res = [] for x in repslist: res.append(abs(x)) return res def listComp(): return [abs(x) for x in repslist] def mapCall(): return list(map(abs, repslist)) def genExpr(): return list(abs(x) for x in repslist) def genFunc(): def gen(): for x in repslist: yield abs(x) return list(gen()) print(sys.version) for test in (mytimer.timer, mytimer.best): print('<%s>' % test.__name__) for tester in (forLoop, listComp, mapCall, genExpr, genFunc): elapsed, result = tester(test) print('-' * 35) print('%-9s: %.5f => [%s...%s]' % (test.__name__, elapsed, result[0], result[-1]))
TypeError: timer() missing 1 required positional argument: 'func'
Отредактировано kozlo22 (Апрель 14, 2013 21:47:28)
Офлайн
221
kozlo22Мне думается что надо наоборот
elapsed, result = tester(test)
elapsed, result = test(tester)
Офлайн
0
JOHN_16
как все просто… Спасибо, Вам.
Офлайн