С помощью хронометража в Python -e, мы научимся измерять время действия любой функции, или же другими словами проверить скорость ее работы, также относится к циклам и т.д. и т.п.
Так вот чтоб все это можно было сделать мы будем использовать модуль Time, который уже есть в инструкциях Python -a.
Для того чтоб все это работало мы создадим и сохраним на долго, утилиту timer.
# Файл mytimer.py
import time
reps = 1000
repslist = range(reps)
def timer(func, *pargs, **kargs):
start = time.clock()
for i in repslist:
ret = func(*pargs, **kargs)
elapsed = time.clock() - start
return (elapsed, ret)
Так вот чтоб все это можно было сделать мы будем использовать модуль Time, который уже есть в инструкциях Python -a.
Для того чтоб все это работало мы создадим и сохраним на долго, утилиту timer.
# Файл mytimer.py
import time
reps = 1000
repslist = range(reps)
def timer(func, *pargs, **kargs):
start = time.clock()
for i in repslist:
ret = func(*pargs, **kargs)
elapsed = time.clock() - start
return (elapsed, ret)
Эта утилита способна вызывать любую функцию с любым количеством аргументов. Она фиксирует начальное время, вызывает функцию фиксированное число раз и вычитает время начала из времени конца.
• Модуль time из стандартной библиотеки языка Python позволяет получить текущее время с точностью, зависящей от платформы. В Windows, как утверждается, этот модуль позволяет получить время с точностью до микросекунды и, следовательно, обеспечивает высокую точность.
• Вызов функции range был вынесен за пределы цикла измерения времени, благодаря чему время конструирования диапазона не накладывается на получаемые результаты в Python 2.6. В Python 3.0 функция range возвращает итератор, поэтому в версии 3.0 данный шаг можно считать излишним (хотя он и не мешает).
• Счетчик reps оформлен как глобальная переменная, благодаря чему она
может изменяться импортирующим модулем при необходимости: mytimer.
reps = N.
Далее будет подробней...