Massdomain.ru

Хостинг и домены
1 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Как измерить время выполнения скрипта Python

Как измерить время выполнения скрипта Python

Допустим, вы хотите знать время выполнения следующего кода Python:

Есть несколько способов измерить время, необходимое для выполнения скрипта Python, но вот лучший способ сделать это, и я объясню почему:

В консоли получим: 0.01137321546

Это вывод, который я получаю на своем Macbook Pro. Итак, это более или менее 1/100 секунды.

Как работает вышеуказанный скрипт

Строка 1: мы импортируем модуль timeit . Строка 3: мы создаем переменную. В этой переменной мы храним код, который хотим протестировать. Этот код должен идти внутри тройных кавычек. Итак, тестовый код предоставляется в виде строки. Строка 10: мы вызываем функцию time.timeit() . Функция timeit() получает тестовый код в качестве аргумента, выполняет его и записывает время выполнения. Чтобы получить точное время, я приказал timeit() выполнить 100 циклов. Поэтому мне пришлось разделить вывод на 100, чтобы получить время выполнения только для одного цикла. Строка 11: мы просто распечатываем время выполнения. Результат — время выполнения в секундах.

Почему timeit() — лучший способ измерить время выполнения кода Python?

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

2. timeit() отключает сборщик мусора, который может исказить результаты.

3. timeit() повторяет тест много раз (в нашем случае 100 раз), чтобы минимизировать влияние других задач, выполняемых в вашей операционной системе.

Упражнение:

Кстати, код, который мы тестировали выше, строит список путем умножения элементов другого списка. Я могу достичь того же результата, используя range :

Если вам больше нечем заняться и попробуйте выполнить упражнение, попробуйте измерить время выполнения приведенного выше кода с помощью timeit() .

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

Как получить время выполнения программы Python?

У меня есть программа командной строки в Python, которая занимает некоторое время, чтобы закончить. Я хочу знать точное время, которое требуется, чтобы закончить бег.

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

25 ответов

  • Как получить время работы программы в Haskell

Как я могу получить время работы программы через функции системного времени в Haskell? Я хотел бы измерить время выполнения всей программы и / или отдельной функции.

Как вы вычисляете время выполнения программы в python?

Самый простой способ в Python:

Это предполагает, что запуск вашей программы занимает не менее десятой доли секунды.

Я поместил этот модуль timing.py в свой собственный каталог site-packages и просто вставил import timing в верхнюю часть моего модуля:

Я также могу вызвать timing.log из своей программы, если в программе есть важные этапы, которые я хочу показать. Но просто включение import timing выведет время начала и окончания, а также общее затраченное время. (Простите мою непонятную функцию secondsToStr , она просто форматирует число секунд с плавающей запятой в форму hh:mm:ss.sss.)

Примечание: Версию Python 3 приведенного выше кода можно найти здесь или здесь .

В Linux или Unix:

Для более подробного вывода,

time.clock() возвращает процессорное время, что позволяет нам вычислять только время, используемое этим процессом (в любом случае на Unix). В документации говорится: «В любом случае, это функция, которую следует использовать для бенчмаркинга Python или алгоритмов синхронизации»

  • Рассчитать время выполнения программы
Читайте так же:
Лучшие программы для диагностики жесткого диска

У меня есть программа в C, которая должна выполнить ряд других программ. Мне нужно получить время выполнения каждой из этих программ, чтобы создать журнал этих времен. Я думал об использовании system() для запуска каждой программы, но я не знаю, как получить время выполнения. Есть ли какой-нибудь.

Мне нужно получить время выполнения скрипта Python со 100 различными входными значениями, поэтому я написал следующую программу C #include <stdlib.h> #include <stdio.h> int main(void) < int i; char command [200]; for (i = 1; i <= 100; ++i) < sprintf(command, time python program.py.

Мне очень нравится ответ Пола McGuire , но я использую Python 3. Итак, для тех, кто заинтересован: вот модификация его ответа, которая работает с Python 3 на *nix (я предполагаю, что под Windows следует использовать clock() вместо time() ):

Если вы сочтете это полезным, вы все равно должны проголосовать за его ответ, а не за этот, так как он сделал большую часть работы ;).

Мне нравится вывод, предоставляемый модулем datetime , где объекты временной дельты показывают дни, часы, минуты и т. Д. По мере необходимости в удобочитаемом для человека виде.

Пример вывода, например

Как J.F. Себастьян упомянул, что этот подход может столкнуться с некоторыми сложными случаями с местным временем, поэтому его безопаснее использовать:

Вы можете использовать профилировщик Python cProfile для измерения времени CPU и, кроме того, сколько времени тратится внутри каждой функции и сколько раз вызывается каждая функция. Это очень полезно, если вы хотите повысить производительность своего скрипта, не зная, с чего начать. Этот ответ на другой вопрос Stack Overflow довольно хорош. Всегда полезно заглянуть и в документацию .

Вот пример того, как профилировать сценарий с помощью cProfile из командной строки:

Еще лучше для Linux: time

Просто используйте модуль timeit . Он работает как с Python 2, так и с Python 3.

Он возвращается через несколько секунд, и вы можете получить свое время выполнения. Это просто, но вы должны написать их в основной функции, которая запускает выполнение программы. Если вы хотите получить время выполнения, даже когда вы получаете ошибку, то возьмите свой параметр «Start» и вычислите его, как:

time.clock()

Устарело с версии 3.3: поведение этой функции зависит от на платформе : вместо этого используйте perf_counter() или process_time(), в зависимости от ваших требований, чтобы иметь четко определенное поведение.

time.perf_counter()

Возвращает значение (в долях секунды) счетчика производительности, т. е. часы с наивысшим доступным разрешением для измерения короткой продолжительности. Он включает время, прошедшее во время сна, и является общесистемным.

time.process_time()

Возвращает значение (в долях секунды) суммы системы и пользователь CPU время текущего процесса. Он не включает время, прошедшее во время сна.

Следующий фрагмент печатает прошедшее время в удобном для чтения формате <HH:MM:SS> .

Для людей с данными, использующих блокнот Jupyter

В ячейке вы можете использовать магическую команду %%time Jupyter для измерения времени выполнения:

Выход

Это будет фиксировать только время выполнения конкретной ячейки. Если вы хотите записать время выполнения всей записной книжки (т. Е. программы), вы можете создать новую записную книжку в том же каталоге и в новой записной книжке выполнить все ячейки:

Предположим, что записная книжка выше называется example_notebook.ipynb . В новой записной книжке в том же каталоге:

Выход

Мне тоже понравился ответ Paul McGuire, и я придумал форму контекстного менеджера, которая больше соответствовала моим потребностям.

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

Он запускает функцию your_module.main() один раз и печатает прошедшее время, используя функцию time.time() в качестве таймера.

Читайте так же:
В какой программе делать базу данных

Чтобы измерить время CPU (например, не включать время во время time.sleep() ) для каждой функции, вы можете использовать модуль profile ( cProfile на Python 2):

Вы можете передать команду -p в timeit выше, если хотите использовать тот же таймер, что и модуль profile .

В IPython , «timeit» любой сценарий:

Я использовал очень простую функцию для определения времени выполнения части кода:

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

Тогда результат будет выглядеть следующим образом:

line_profiler будет профилировать время выполнения отдельных строк кода. Профилировщик реализован в C через Cython , чтобы уменьшить накладные расходы на профилирование.

У меня была такая же проблема во многих местах, поэтому я создал удобный пакет horology . Вы можете установить его с помощью pip install horology , а затем сделать это элегантным способом:

Или еще проще (если у вас есть одна функция):

Он заботится о единицах измерения и округлении. Он работает с python 3.6 или новее.

Существует модуль timeit , который можно использовать для определения времени выполнения кода Python.

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

Более поздний ответ, но я использую встроенный timeit :

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

Timeit-это класс в Python, используемый для вычисления времени выполнения небольших блоков кода.

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

Пример кода выглядит следующим образом:

Вы делаете это просто в Python. Нет необходимости усложнять это.

Во-первых, установите пакет humanfriendly, открыв командную строку (CMD) от имени администратора и введите там — pip install humanfriendly

enter image description here

Похожие вопросы:

Независимо от используемого языка (C++, Java и т. д.), Есть ли способ в Eclipse показать время выполнения программы от начала до конца? Более ранний вопрос — Eclipse, чтобы получить время выполнения.

Я хочу получить время выполнения программы в моем terminal. Я знаю, что должен использовать эту команду: time chmod +x

/example но выход таков: real 0m0.088s user 0m0.057s sys 0m0.030s Но я хочу.

Есть ли программное обеспечение/веб-сайт, где я могу отправить свои коды C, C++ и Java и получить статистику, такую как время выполнения программы, используемая память ? Мне интересно провести.

Как я могу получить время работы программы через функции системного времени в Haskell? Я хотел бы измерить время выполнения всей программы и / или отдельной функции.

Как вы вычисляете время выполнения программы в python?

У меня есть программа в C, которая должна выполнить ряд других программ. Мне нужно получить время выполнения каждой из этих программ, чтобы создать журнал этих времен. Я думал об использовании.

Мне нужно получить время выполнения скрипта Python со 100 различными входными значениями, поэтому я написал следующую программу C #include <stdlib.h> #include <stdio.h> int main(void) <.

Читайте так же:
Браузеры медленно грузят страницы

история : Во время выступления Нины Захаренко PyCon об управлении памятью в Python году она объясняет, как работает поколенческая сборка мусора в Python году, отмечая, что: Python ведет список всех.

Мне нужно измерить время выполнения программы Python, имеющей следующую структуру: import numpy import pandas def func1(): code def func2(): code if __name__ == ‘__main__’: func1() func2() Если я.

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

На другом конце спектра методов профилирования кода лежит инструмент cProfile , который даёт программисту, надо признать, слишком много сведений:

Тут мы запускаем исследуемый скрипт с использованием модуля cProfile и применяем аргумент time . В результате строки вывода упорядочены по внутреннему времени ( cumtime ). Это даёт нам очень много информации. На самом деле то, что показано выше, это лишь около 10% вывода cProfile .

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

Измерение времени выполнения скрипта¶

Для оценки времени выполнения скрипта есть несколько вариантов. Тут используются самые простые варианты:

  • утилита Linux time
  • и модуль Python datetime

При оценке времени выполнения скрипта в данном случае не важна высокая точность. Главное — сравнить время выполнения скрипта в разных вариантах.

Утилита time в Linux позволяет замерить время выполнения скрипта. Для использования утилиты time достаточно написать time перед строкой запуска скрипта:

Нас интересует real время. В данном случае это 4.7 секунд.

datetime ¶

Второй вариант — модуль datetime. Этот модуль позволяет работать со временем и датами в Python.

DateTime, TimeDelta, Strftime(Format): дата и время в Python с примерами

DateTime, TimeDelta, Strftime(Format): дата и время в Python с примерами

От автора: классы date, time и datetime предоставляют ряд функций для работы в Python с датами, временем и временными интервалами. Date и datetime являются объектами Python, поэтому, когда вы манипулируете ими, вы фактически манипулируете объектами, а не строками или временными метками. Всякий раз, когда вы манипулируете датами или временем, вам нужно импортировать функцию datetime.

Классы datetime в Python подразделяются на 5 основных классов.

date — работа с простой датой (месяц, день, год)

time — время, независимое от дня (час, минута, секунда, микросекунда)

datetime — комбинация времени и даты (месяц, день, год, час, секунда, микросекунда)

Бесплатный курс «Python. Быстрый старт»

Получите курс и узнайте, как создать программу для перевода текстов на Python

timedelta — продолжительность времени, используемого для манипулирования датами

tzinfo— абстрактный класс для работы с часовыми поясами

В этом руководстве мы рассмотрим:

Как использовать классы Date и DateTime

Вывод даты с использованием date.today()

Текущая дата и время в Python: now() today()

Как отформатировать дату и время с помощью Strftime()

Как использовать Объекты Timedelta

Как использовать классы Date и DateTime

Шаг 1) Прежде чем запускать код для datetime, важно импортировать модули date time, как показано на скриншоте ниже.

Эти операторы импорта являются предопределенными частями функционала в библиотеке Python, которые позволяют вам манипулировать датами и временем без написания какого-либо кода. Рассмотрим следующее перед выполнением кода даты и времени:

Эта строка сообщает интерпретатору Python, что из модуля datetime импортируется класс date. Мы не пишем код для этого функционала, а просто импортируем его для использования.

Читайте так же:
Забыл пароль от вк и фамилию

Шаг 2) Далее мы создаем экземпляр объекта даты.

Шаг 3) Далее мы выводим дату и запускаем код.

Вывод соответствует ожидаемому.

Вывод даты с использованием date.today()

Функция date.today имеет несколько свойств, связанных с ней. Мы можем вывести отдельно день / месяц / год и многое другое. Давайте рассмотрим пример:

Сегодняшний номер дня недели

Функция date.today() также дает номер дня недели. Вот таблица рабочих дней, которая начинается с понедельника 0 и заканчивается воскресеньем 6.

Номер дня недели полезен для массивов, индекс которых зависит от дня недели.

Текущая дата и время в Python: now() today()

Шаг 1) Как и объекты Date, мы также можем использовать в Python объекты «DATETIME» . Он выдает дату вместе со временем в часах, минутах, секундах и миллисекундах.

Когда мы выполняем код для datetime, он выдает выходные данные с текущей датой и временем.

Шаг 2) С помощью «объекта DATETIME» вы также можете вызвать класс time.

Предположим, мы хотим вывести только текущее время без даты.

Мы импортировали класс time. Мы присваиваем ему текущее значение времени, используя datetime.now(). Мы присваиваем значение текущего времени переменной t. И это даст нам только время. Итак, давайте запустим эту программу.

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

Шаг 3) Мы применим индексатор дня недели к массиву дней недели, чтобы узнать, какой сегодня день.

Оператору дней (wd) присваивается номер (0-6) в зависимости от текущего дня недели. Здесь мы объявили массив списка для дней (Mon, Tue, Wed…Sun). Используйте это значение индекса, чтобы узнать, какой сегодня день. В нашем случае это номер 2, и он представляет среду, поэтому на выходе мы получим «Which is a Wednesday».

Вот полный код для получения текущей даты и времени, используя datetime.

Как отформатировать дату и время с помощью Strftime()

На данный момент мы узнали, как использовать в Python объекты datetime и date. Теперь мы узнаем, как использовать функцию форматирования времени и даты.

Шаг 1) Сначала мы рассмотрим, как отформатировать год. Вот пример:

Мы использовали для форматирования «функцию strftime».

Эта функция использует другой управляющий код для вывода.

Каждый управляющий код указывает различные параметры, такие как год, месяц, день недели и дата [(%y/%Y – Year), (%a/%A- weekday), (%b/%B- month), (%d — day of month)].

В нашем случае это («%Y»), который указывает год, он выводим полный год с веком (например, 2018).

Шаг 2) Теперь, если вы замените («%Y») на строчные буквы, т. е. («%y») и выполните код, выходные данные будут отображать только (18), а не (2018). Век года не будет отображаться как показано на скриншоте ниже.

Бесплатный курс «Python. Быстрый старт»

Получите курс и узнайте, как создать программу для перевода текстов на Python

Шаг 3) Функция Strf может объявлять отдельно дату, день, месяц и год. Также с небольшими изменениями в управляющем коде функции strftime вы можете отформатировать стиль текста.

Внутри функции strftime, если вы замените (%a) на заглавную A, т. е. (%A), вывод будет «Friday», а не просто «Fri».

Шаг 4) С помощью функции «Strftime» мы также можем получить локальное системное время, дату или и то, и другое.

Читайте так же:
Браузер не видит флеш плеер

%C — указывает местную дату и время

%x — указывает местную дату

%X — указывает местное время

В результате вы можете увидеть вывод, как и ожидалось.

Шаг 5) Функция strftime позволяет вам вызывать время в формате 24 часа или 12 часов.

Просто определив управляющий код, %I/H для часов, %M для минут, %S для секунд, можно вызвать время в разных форматах.

Время 12 часов объявляется, как [print now.strftime(«%I:%M:%S %P)].

24 часа объявляется, как [print now.strftime(«%H:%M»)].

Вот полный код для преобразования datetime в объект String.

Как использовать Объекты Timedelta

С объектами timedelta вы можете оценить время как для будущего, так и для прошлого. Другими словами, это временной интервал для прогнозирования любого конкретного дня, даты или времени.

Помните, что эта функция предназначена не для вывода времени или даты, а для того, чтобы ВЫПОЛНЯТЬ РАСЧЕТЫ в будущем или прошлом. Давайте рассмотрим пример.

Шаг 1) Чтобы запустить Объект Timedelta, вам нужно сначала объявить оператор импорта, а затем выполнить код:

Указываем оператор импорта для timedelta

Теперь указываем код для вывода объекта из timedelta, как показано на снимке экрана

Запустите код. Timedelta представляет промежуток 365 дней, 8 часов и 15 минут и выводит то же самое

Смешение? Об этом в следующем шаге.

Шаг 2) Давайте получим текущие дату и время, чтобы проверить, как работает наш оператор импорта. Когда код выполняется, он выводим сегодняшнюю дату, что означает, что наш оператор импорта работает хорошо.

Шаг 3) Посмотрим, как мы можем получить дату через год с помощью Объекта Timedelta. Когда мы запускаем код, он выдает результат, как и ожидалось.

Шаг 4) Еще один пример того, как Timedelta может использоваться для расчета будущей даты из текущей даты и времени.

Шаг 5) Давайте рассмотрим более сложный пример. Я хотел бы определить, сколько дней прошло в новом году. Вот как мы будем действовать.

Если стоит перед вами такая задача, она реализуется с помощью метода mktime() , который принимает struct_time . После этого она выполняет обратное действие функции localtime(). То есть, превращает время по локальному часовому поясу в число секунд, которые прошли со старта эпохи с поправкой на часовой пояс.

Функции mktime() и localtime() тесно переплетены между собой. Этот фрагмент кода наглядно демонстрирует это. Давайте рассмотрим его, чтобы более глубоко понимать, как это работает.

import time

seconds = 1575721830

# возвращает struct_time

t = time.localtime(seconds)

# возвращает секунды из struct_time

s = time.mktime(t)

Видим, что переменной seconds было присвоено 1575721830 секунд с начала эпохи. Сначала программа получает точную дату, время и другие параметры, основываясь на этом значении, поместила его в переменную t , после чего конвертирует ее содержимое в переменную s .

После этого отбивает новую строку и выводит количество секунд в консоль. Можете проверить: это будет то же самое число, что было присвоено переменной seconds.

Обработка часового пояса

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

Что здесь что: datetime_NY и datetime_London представляют собой объекты datetime, которые содержат текущее время и дату соответствующего часового пояса. Как видите, ничего сложного.

Хотите получить самые новые знания про Python? Добро пожаловать на наши курсы!

голоса
Рейтинг статьи
Ссылка на основную публикацию
Adblock
detector