У меня есть программа командной строки на Python, которая требует времени, чтобы закончить. Я хочу знать точное время, необходимое для завершения бега.
Я посмотрел на timeit
модуль, но кажется, что это только для небольших фрагментов кода. Я хочу, чтобы время всей программы.
round(time.time() - start_time, 2)
(или любое другое десятичное число, которое вы хотите), я вернул научные цифры, такие как 1.24e-5.'%.2f'
вместоround()
здесь.Я помещаю этот
timing.py
модуль в свой собственныйsite-packages
каталог и просто вставляю егоimport timing
в верхнюю часть моего модуля:Я также могу позвонить
timing.log
из своей программы, если в программе есть важные этапы, которые я хочу показать. Но только включениеimport timing
напечатает время начала и окончания, а также общее прошедшее время. (Простите мою непонятнуюsecondsToStr
функцию, она просто форматирует число с плавающей точкой в чч: мм: сс.ссс.)Примечание: версию вышеприведенного кода на Python 3 можно найти здесь или здесь .
источник
from functools import reduce
сверху и поставьте квадратные скобки вокруг каждого оператора печати. Работает отлично!В Linux или Unix:
В Windows см. Вопрос StackOverflow: Как измерить время выполнения команды в командной строке Windows?
Для более подробного вывода,
источник
secondsToStr()
функции.Мне очень нравится ответ Пола Макгуайра , но я использую Python 3. Так что для тех, кто заинтересован: вот модификация его ответа, которая работает с Python 3 для * nix (я думаю, в Windows, что
clock()
следует использовать вместоtime()
):Если вы находите это полезным, вы все равно должны проголосовать за его ответ вместо этого, так как он сделал большую часть работы;).
источник
timedelta(seconds=t).total_seconds()
полезным.time.clock()
возвращает время процессора, что позволяет нам рассчитывать только время, используемое этим процессом (в любом случае в Unix). Документация гласит: «В любом случае, эту функцию следует использовать для тестирования Python или алгоритмов синхронизации».источник
Мне нравится вывод, который
datetime
предоставляет модуль, где объекты с дельтой времени показывают дни, часы, минуты и т. Д. По мере необходимости понятным для человека способом.Например:
Пример вывода, например
или
Как упомянул Дж. Ф. Себастьян, этот подход может столкнуться с некоторыми сложными случаями с местным временем, поэтому безопаснее использовать:
источник
timedelta(seconds=time.monotonic()-start)
здесь (или,time.time()
если интервал большой). Не вычитайте наивные объекты даты и времени, которые представляют местное время; Местное время не однообразноstart_time = time.monotonic(); end_time = time.monotonic(); timedelta(seconds=end_time - start_time)
. Я верю, что вы правы, но вы также должны отформатировать его, когда вернетесьdatetime.timedelta(0, 0, 76)
. Кроме того, кажется, что монотонный метод был добавлен только в Python 3.str()
чтобы сделать это "человеком". Я обновлю ответ, спасибо.Вы можете использовать Python profiler cProfile для измерения времени процессора и, кроме того, сколько времени затрачивается внутри каждой функции и сколько раз вызывается каждая функция. Это очень полезно, если вы хотите улучшить производительность вашего скрипта, не зная, с чего начать. Этот ответ на другой вопрос переполнения стека довольно хорош. Всегда хорошо посмотреть в документации тоже.
Вот пример того, как профилировать скрипт, используя cProfile из командной строки:
источник
X function calls in Y CPU seconds
. Если вам нужно время на настенных часах, используйте один из ответов здесь.Еще лучше для Linux:
time
источник
time.clock ()
time.perf_counter ()
time.process_time ()
источник
Просто используйте
timeit
модуль. Он работает как с Python 2, так и с Python 3.Он возвращается в секундах, и вы можете иметь время выполнения. Это просто, но вы должны написать их в главной функции w, которая запускает выполнение программы. Если вы хотите получить время выполнения, даже если вы получили сообщение об ошибке, введите для него параметр «Старт» и рассчитайте его следующим образом:
источник
finally
частью?Следующий фрагмент кода печатает прошедшее время в удобном для восприятия человеком
<HH:MM:SS>
формате.источник
источник
В IPython «timeit» любой скрипт:
источник
Он запускает
your_module.main()
функцию один раз и печатает прошедшее время, используяtime.time()
функцию в качестве таймера.Чтобы эмулировать
/usr/bin/time
в Python, смотрите подпроцесс Python с / usr / bin / time: как получить информацию о времени, но игнорировать все остальные выходные данные? ,Чтобы измерить время процессора (например, не включать время в течение
time.sleep()
) для каждой функции, вы можете использоватьprofile
модуль (cProfile
на Python 2):Вы можете перейти
-p
кtimeit
приведенной выше команде, если хотите использовать тот же таймер, что иprofile
модуль.Смотрите Как вы можете профилировать скрипт Python?
источник
Мне также понравился ответ Пола Макгуайра, и он придумал форму менеджера контекста, которая больше соответствовала моим потребностям.
источник
Для данных людей, использующих Jupyter Notebook
В ячейке вы можете использовать
%%time
магическую команду Jupyter для измерения времени выполнения:Вывод
Это будет захватывать только время выполнения конкретной ячейки. Если вы хотите зафиксировать время выполнения всей записной книжки (т.е. программы), вы можете создать новую записную книжку в том же каталоге и в новой записной книжке выполнить все ячейки:
Предположим, записная книжка называется
example_notebook.ipynb
. В новой записной книжке в том же каталоге:Вывод
источник
Существует
timeit
модуль, который можно использовать для определения времени выполнения кода Python.Он имеет подробную документацию и примеры в документации Python, 26.6. timeit - измеряет время выполнения небольших фрагментов кода .
источник
timeit
в вопросе. Вопрос в том, как это можно использовать здесь (или следует использовать здесь и каковы альтернативы). Вот возможный ответ .Используйте line_profiler .
line_profiler будет профилировать время выполнения отдельных строк кода. Профилировщик реализован в C через Cython , чтобы уменьшить накладные расходы на профилирование.
Результаты будут:
источник
Я использовал очень простую функцию для измерения времени выполнения кода:
И чтобы использовать его, просто вызовите его перед кодом для измерения, чтобы получить синхронизацию функции, а затем вызовите функцию после кода с комментариями. Время появится перед комментариями. Например:
Тогда вывод будет выглядеть так:
источник
У меня была такая же проблема во многих местах, поэтому я создал удобный пакет
horology
. Вы можете установить его,pip install horology
а затем сделать это элегантным способом:будет выводить:
Или даже проще (если у вас есть одна функция):
будет выводить:
Он заботится о единицах и округлениях. Он работает с Python 3.6 или новее.
источник
main.interval
.Это ответ Пола Макгуайра, который работает для меня. На всякий случай, если у кого-то возникли проблемы с этим.
Звоните
timing.main()
из вашей программы после импорта файла.источник
Timeit - это класс в Python, используемый для вычисления времени выполнения небольших блоков кода.
Default_timer - метод в этом классе, который используется для измерения времени настенных часов, а не времени выполнения ЦП. Таким образом, выполнение другого процесса может помешать этому. Таким образом, это полезно для небольших блоков кода.
Пример кода выглядит следующим образом:
источник
timeit
это лучший ответ IMO для многих случаев.Позже отвечу, но я использую
timeit
:code_to_test
.number
Аргумент указывает количество повторений кода.источник
Время выполнения программы Python может быть непоследовательным в зависимости от:
Это потому, что наиболее эффективным способом является использование «Порядка роста» и изучение большой буквы «О», чтобы сделать это правильно.
В любом случае, вы можете попытаться оценить производительность любой программы Python на определенном количестве машин, считая количество шагов в секунду, используя этот простой алгоритм: адаптируйте его к программе, которую вы хотите оценить
источник
Вы делаете это просто в Python. Нет необходимости усложнять.
источник
По аналогии с ответом @rogeriopvl я добавил небольшую модификацию, чтобы преобразовать часы в минуты-минуты, используя ту же библиотеку для длительных заданий.
Пример вывода
источник
Во-первых, установите удобный для пользователя пакет, открыв командную строку (CMD) от имени администратора, и введите там -
pip install humanfriendly
Код:
Вывод:
источник
Чтобы использовать обновленный ответ metakermit для Python 2.7, вам потребуется монотонный пакет.
Код будет выглядеть следующим образом:
источник
Я попытался найти разницу во времени, используя следующие сценарии.
источник
Если вы хотите измерять время в микросекундах, то вы можете использовать следующую версию, полностью основанную на ответах Пола Макгуайра и Никохо - это код Python 3. Я также добавил немного цвета к нему:
log () => функция, которая печатает информацию о времени.
txt ==> первый аргумент в логе и его строка для отметки времени.
atexit ==> Модуль Python для регистрации функций, которые вы можете вызывать при выходе из программы.
источник