Андрей
Светлов на линии:
Речь пойдет
о функциях для измерения интервалов
времени, расположенных в модуле time.
time() и clock()
Очень долго
их было ровно две: time.time() и time.clock().
Использование
предельно простое:
t1 = time.time()
# do tested stuff
print(time.time() -
t1)
Получаем
время выполнения кода в секундах.
Две функции
нужны для того, чтобы усложнить жизнь
программиста. Дело в том, что на Windows
точнее работает функция time.clock, а на
прочих Unix/Linux — time.time
…
Прогресс не
стоит на месте, и появились функции c
наносекундным разрешением: time.clock_gettime
и time.clock_getres являются тонкими обёртками
над одноимёнными Posix вызовами
…
Не вполне
ясно, какой тип таймера выбирать.
...
Во первых,
возвращаемое время может быть абсолютным
и относительным. Если по абсолютному
времени можно узнать «который час», то
относительное годится лишь для измерения
интервалов
…
Обычно желание
простое: измерить интервал времени с
максимально возможной точностью, причём
способ не должен зависеть от установленной
операционной системы и используемого
«железа».
Вот тут и
приходят на помощь функции time.monotonic() и
time.wallclock(). Они не требуют параметров,
работают везде и используют максимально
точный из доступных таймеров. Для Windows
это clock(), на Linux последовательно
перебираются CLOCK_MONOTONIC_RAW, CLOCK_MONOTONIC и
CLOCK_REALTIME. Кто первый отзовётся — тот и
лучший.
Разница между
функциями незначительная: time.wallclock()
попытается перейти к таймеру абсолютного
времени если не найдет лучший вариант
(и никогда не закончится исключением),
time.monotonic() выбросит OSError
Подробно и
внятно изложено, прекрасная статья и,
к счастью, не последняя.
Про тайны
импорта в Python.
Комментариев нет:
Отправить комментарий