Простой Python. современный стиль программирования - читать онлайн бесплатно полную версию книги . Страница 291

время может варьироваться:

$ python time1.py

2.1457672119140625e-06

$ python time1.py

2.1457672119140625e-06

$ python time1.py

2.1457672119140625e-06

$ python time1.py

1.9073486328125e-06

$ python time1.py

3.0994415283203125e-06

Программа работала две-три миллионные доли секунды. Попробуем выполнить

что-то помедленнее, вроде функции sleep. Если мы усыпим выполнение на се-

кунду, наш таймер покажет значение, чуть больше секунды. Сохраните файл под

именем time2.py:

from time import time, sleep

t1 = time()

sleep(1.0)

print(time() — t1)

Чтобы быть уверенным в результатах, запустим программу несколько раз:

$ python time2.py

1.000797986984253

$ python time2.py

1.0010130405426025

$ python time2.py

1.0010390281677246

Как и ожидалось, программе для работы требуется около секунды. Если бы это

оказалось не так, то либо нашему таймеру, либо функции sleep() должно было бы

стать стыдно.

Существует более удобный способ измерить время выполнения фрагментов

кода вроде этого — стандартный модуль timeit (http://bit.ly/py-timeit). У него

имеется функция с именем, как вы уже догадались, timeit(), которая запустит

ваш код заданное количество раз и выведет результаты. Ее синтаксис выглядит

так: timeit.timeit( код, число, количество_раз).

В примерах этого раздела код должен находиться в кавычках, чтобы он выпол-

нялся не после нажатия кнопки Return, а лишь внутри функции timeit(). (В следу-

Оптимизируем код

373

ющем разделе вы увидите, как можно измерить время выполнения некоторой

функции, передав ее имя в функцию timeit().) Запустим предыдущий пример

и измерим время его выполнения. Назовем этот файл timeit1.py:

from timeit import timeit

print(timeit('num = 5; num *= 2', number=1))

Запустим его несколько раз:

$ python timeit1.py

2.5600020308047533e-06

$ python timeit1.py

1.9020008039660752e-06

$ python timeit1.py

1.7380007193423808e-06