Простите за долгий перерыв, тут будет показана другая версия реализации хронометража, с помощью аргументов которые передаются только по именам.
Для упрощения реализации модуля mytimer, мы можем также использовать аргументы, которые могут передаваться только по именам, появившиеся в Python 3.0.
# Файл mytimer.py (только для 3.X)
“””
Вместо формы ** и метода pop словарей используются аргументы, которые могут
передаваться только по именам, появившиеся в версии 3.0.
В версии 3.0 нет необходимости выносить вызов range() за пределы цикла, так как эта
функция возвращает генератор, а не список
“””
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)
Результат будет идентичен предыдущей версии...