Как измерить время работы программы python

Нередко возникает необходимость замера времени выполнения кода, написанного на языке
Python. Рассмотрим способы прямого замера и замера с использованием менеджера контекста.

Прямой замер времени выполнения

Часто требуется просто замерить время выполнения без разрастания проекта. Для этого можно использовать классический подход: зафиксировать время в начале и конце выполнения участка кода, разница и будет временем выполнения.

Для этого используется библиотека time и команда time.time(), возвращающая текущее время.

Рассмотрим на примере замера времени поэлементного умножения двух достаточно больших массивов.

Замер с использованием менеджера контекста

Для автоматизации можно использовать менеджер контекста с помощью модуля timer.py

Тогда замер времени примет следующий вид:

Источник: san-tit.blogspot.com

Тайминг в Python

Python – язык программирования, который можно отнести к общему назначению. С его помощью пишут как бизнес-софт, так и развлекательный (игровой) контент. Это отличное решение для новичков в разработке. Относится к объектно-ориентированному типу.

Измеряем время выполнения функции на Python | Гайд №2

В данной статье будет рассказано о том, что собой представляет задержка в Python, как использовать time (таймер), для чего все это нужно. Информация пригодится даже опытным разработчикам, которые планируют работу со временем в будущей утилите.

Ключевые термины

Пытаясь освоить Python, программеру потребуется выучить немало теории. Вот базовые термины, без которых время и остальные компоненты кодификаций применять на деле не получится:

  1. Ключевое слово – зарезервированное системой слово или фраза. Обозначает действие, операцию, функцию. Ключевики не могут выступать в виде имен переменных.
  2. Переменная – именованная ячейка памяти, которую можно изменять, сохранять и считывать.
  3. Алгоритм – последовательность действий, набор правил, помогающих решать те или иные задачи.
  4. Класс – набор связанных между собой объектов, которые имеют общие свойства.
  5. Объект – комбинация переменных, констант и иных структурных единиц. Они выбираются совместно и аналогичным образом проходят обработку.
  6. Константа – значение, которое не будет меняться на протяжении всего выполнения утилиты.
  7. Тип данных – классификация информации определенного вида.
  8. Массив – множество данных. Они предварительно группируются.

Огромную роль в Python играют ключевые слова. Их необходимо либо запоминать, либо заучивать, либо держать где-то поблизости справочник с соответствующими данными. Иначе при объявлении переменных не исключены проблемы.

Задержка – это…

Задержка – термин, который применим ко времени. Он встречается и в обыденной жизни. Это – ситуация, когда что-то происходит или должно осуществиться не сразу. Пример – после наступления каких-то обстоятельств.

Как узнать время выполнения программы? #python #программирование

В программировании задержка «откладывает» выполнение кода на определенное время. Часто такая потребность возникает тогда, когда нужно дождаться завершения иного процесса, чтобы задействовать далее полученный результат.

Читайте также:
Как называется программа которая фоткает

При рассмотрении многопоточных утилит, использовать таймер (timer) и время (time) нужно, чтобы дождаться завершения операции и функций из других потоков.

Класс Timer

Класс Timer () в Python отвечает за время и работу с ним «от начала по конца». Модуль, метод, используемый для задержки и всего, что с ней связано. Перед использованием оного требуется произвести импорт компонента.

Для этого подойдет запись типа import time в Python. Класс относится к модулю threading. Он создает таймер, который запускает функцию с аргументами и ключевыми значениями (kwargs). Происходит это за счет time, установленного как interval. Этот параметр указывается в секундах.

Программеру предстоит запомнить следующее:

  • Запись функции с классом, отвечающего за таймаут (timeout) –
  • Если args равен None (этот показатель устанавливается изначально), Python использует пустой список.
  • Когда ключевое слово kwargs равен None, применяется пустой словарь.
  • Класс «Таймер» представлен действием, которое нужно запускать только по прошествии конкретного промежутка времени.
  • Таймер выступает в виде подкласса threading.Thread().

Все это требуется запомнить. А еще – учесть, что в процессе коддинга предстоит использовать суперкласс (super class), а также мета данные.

Функции

Рассматривая methods time, программисту требуется изучить разнообразные функции, связанные со временем. Это поможет лучше разобраться в потоках и задержках. Не стоит забывать, что при тестинге важно использовать print. Эта операция выводит результат на экран.

Time.Time

Функция Time() будет возвращать число секунд, которые прошли с начала эпохи. Для Unix-систем это – 1.01.1970. Отсчет с 12 часов ночи ровно.

Ctime()

Компонент, который будет в виде аргумента в Python принимать количество секунд, прошедших с самого начала эпохи. Результат – возврат строки по местному time.

Sleep

Отвечает за непосредственную задержку. Откладывает исполнение нынешнего потока на заданное количество секунд.

Класс struct_time

Изучая, какой метод подойдет для работы с таймерами и super class, стоит обратить внимание на struct_time. Этот объект может быть принят некоторыми функциями в упомянутом ранее модуле. При обработке оного происходит возврат.

Выше – наглядный пример.

Реализация Sleep

Когда нужный метод для работы с задержкой изучен, можно рассмотреть то, как сделать таймаут. Для этого используют super class, а также sleep. Он проходит реализацию несколькими способами:

  • Через time.sleep(). Это – встроенная возможность Python. Отвечает за таймаут через модуль time. Откладывает выполнение потока на установленное количество секунд.

  • Вызов с декораторами. Активируют, когда одно неудачно выполненное действие требуется запустить снова.

  • В потоках. Такие ситуации требуют, чтобы приложение избегало простоя. Для этого применяют или time.sleep(), или Event.wait() из модуля threading.
  • Из Async IO. Асинхронные возможности появились в Питоне, начиная с 3.4 версии. Это – тип параллельного программирования.

  • В Tkinter и wxPython. Отсрочки возможны при создании пользовательских интерфейсов. При применении sleep() внутри GUI кода блокируется цикл обработки событий.
  • After(). Это – метод, который погружает в сон для Tkinter. Часть стандартной библиотеки.
Читайте также:
Недостаточно памяти закройте программы

  • CallLater. Метод для wxPython. Имеет больше виджетов и хорошо годится для нативной разработки.

А вот видео, где можно наглядно увидеть работу с таймером в Python. Лучше разобраться с этой темой, как и с языком программирования, помогут дистанционные компьютерные курсы. Программы рассчитаны на срок до года. В конце будет выдан электронный сертификат. В процессе пользователи получат не только хорошо поданный учебный материал, но и новые полезные связи.

А еще – соберут портфолио для трудоустройства.

Источник: otus.ru

Русские Блоги

Метод определения времени работы, использования ЦП и памяти программы Python

hot3.png

Стандарты набора персонала Unicorn Enterprise Heavy для Python-инженеров 2019 >>>

При запуске сложных программ Python время выполнения будет очень большим. В это время вы можете захотеть повысить эффективность выполнения программы. Но что делать?

Прежде всего, должен быть инструмент, который может обнаруживать узкие места в коде, например, выяснять, какая часть времени выполнения больше. Затем оптимизируйте эту часть.

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

Поэтому в этой статье я представлю 7 различных инструментов Python для проверки времени выполнения функций в коде и использования памяти и процессора.
1. Используйте декораторы для измерения времени выполнения функции.

Есть простой способ — определить декоратор для измерения времени выполнения функции и вывода результата:

Затем добавьте этот декоратор перед функцией, которую необходимо измерить, как показано ниже:

Например, вот время, необходимое для проверки функции сортировки массива, содержащего 2 миллиона случайных чисел:

При выполнении скрипта вы увидите следующий результат:

Total time running random_sort: 1.41124916077 seconds

2. Используйте модуль timeit

Другой метод — использовать модуль timeit для расчета среднего расхода времени.

Выполните следующий сценарий, чтобы запустить модуль.

python -m timeit -n 4 -r 5 -s «import timing_functions» «timing_functions.random_sort(2000000)»

Timing_functions — это имя файла сценария Python.

В конце вывода вы можете увидеть следующие результаты:

4 loops, best of 5: 2.08 sec per loop

Это означает, что тест проводился 4 раза, и каждый тест повторялся в среднем 5 раз. Лучший результат теста составил 2,08 секунды.

Если вы не укажете количество тестов или количество повторов, значение по умолчанию — 10 тестов, каждый повторяется 5 раз.
3. Используйте команду time в системах Unix.

Однако и декораторы, и timeit основаны на Python. При тестировании Python во внешней среде очень полезна утилита unix time.

Запустите утилиту времени:

$ time -p python timing_functions.py
Total time running random_sort: 1.3931210041 seconds real 1.49 user 1.40 sys 0.08

Первая строка поступает из предопределенного декоратора, остальные три строки:

  • Real представляет собой общее время выполнения сценария.
  • Пользователь представляет процессорное время, затраченное на выполнение скрипта.
  • Sys представляет время, затраченное на выполнение функций ядра.

Примечание. Согласно определению Википедии, ядро ​​- это компьютерная программа, которая управляет вводом и выводом программного обеспечения и преобразует их в инструкции по обработке данных, которые могут выполняться центральным процессором и другими электронными устройствами компьютера.

Читайте также:
Программы которые применяются для мониторинга персональных компьютеров

Следовательно, разница между временем реального выполнения и временем выполнения User + Sys — это время, затрачиваемое на ввод / вывод и другие задачи, выполняемые системой.
4. Используйте модуль cProfile.

Если вы хотите знать, сколько времени потребляет каждая функция и метод и сколько раз эти функции вызываются, вы можете использовать модуль cProfile.

$ python -m cProfile -s cumulative timing_functions.py

Теперь вы можете увидеть подробное описание функций в коде, которое содержит количество вызовов каждой функции. Поскольку используется опция -s (накопление), окончательный результат будет отсортирован по совокупному времени выполнения каждой функции. функция.

201541103516157.jpg (690×654)

Читатели обнаружат, что общее время, необходимое для выполнения сценария, больше, чем раньше. Это связано с тем, что сама операция измерения времени выполнения каждой функции также требует времени.
5. Используйте модуль line_profiler

Модуль line_profiler может предоставить процессорное время, необходимое для выполнения каждой строки кода.

Сначала установите модуль:

$ pip install line_profiler

Желательно, чтобы вы могли получить построчное описание функции random_sort2 с помощью следующей команды.

$ kernprof -l -v timing_functions.py

Где -l означает построчное объяснение, -v означает вывод подробных результатов. Таким образом, мы видим, что 44% времени вычислений уходит на построение массива, тогда как метод sort () занимает оставшиеся 56% времени.

201541103623876.jpg (690×208)

Точно так же из-за необходимости определять время выполнения время выполнения скрипта больше.
6. Используйте модуль memory_profiler

Модуль memory_profiler используется для построчного измерения использования памяти кодом. Использование этого модуля замедлит выполнение кода.

Способ установки следующий:

pip install memory_profiler

Кроме того, рекомендуется установить пакет psutil, чтобы memory_profile работал быстрее:

$ pip install psutil
$ python -m memory_profiler timing_functions.py

Время выполнения скрипта на 1-2 секунды больше, чем раньше. Если пакет psutil не установлен, он может быть длиннее.

201541103657211.jpg (690×145)

Из результатов видно, что использование памяти измеряется в MiB, что означает мебибайт (1MiB = 1.05MB).
7. Используйте пакет guppy

Наконец, с помощью этого пакета вы можете узнать, сколько объектов каждого типа (str, tuple, dict и т. Д.) Создается на каждом этапе выполнения кода.

Способ установки следующий:

$ pip install guppy

Далее добавляем его в код:

from guppy import hpy def random_sort3(n): hp = hpy() print «Heap at the beginning of the functionn», hp.heap() l = [random.random() for i in range(n)] l.sort() print «Heap at the end of the functionn», hp.heap() return l if __name__ == «__main__»: random_sort3(2000000)
$ python timing_functions.py

Вы можете увидеть, что выходной результат:

201541103732081.jpg (688×533)

Поместив heap () в разные позиции в коде, вы можете понять поток операций создания и удаления объектов в скрипте.

Если вы хотите узнать больше об оптимизации скорости кода Python, я предлагаю вам прочитать эту книгу «High Performance Python: Practical Performant Programming for Humans, september 2014.》

Источник: russianblogs.com

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru