Модуль time в Python 3 — таймеры времени
Модуль time в Python 3 обеспечивает доступ к нескольким различным типам, каждые из которых применяются для разных целей. Функция monotonic() может использоваться для измерения прошедшего времени в длительном процессе. Она никогда не уменьшает значение времени, даже если изменяется системное время.
Для тестирования производительности perf_counter() обеспечивает доступ к таймерам с самым высоким дроблением единиц времени для более точного измерения. Время CPU доступно через clock() , а process_time() возвращает комбинированное значение времени процессора и системы.
Обновлено: 2022-03-16 17:46:47 Вадим Дворников автор материала
Обратите внимание
В реализациях представлены функции библиотеки C для управления датами и временем. Поскольку они связаны с базовой реализацией языка C , некоторые элементы ( такие как начало эпохи и максимальное значение даты ) зависят от платформы. Подробную информацию смотрите в документации к библиотеке.
Сравнение часов
Детали реализации таймера возможность которой предоставляет модуль time Python зависят от платформы. Используйте get_clock_info() для получения основной информации о текущей реализации, включая доступную точность часов:
time_get_clock_info.py import textwrap import time available_clocks = [ ('clock', time.clock), ('monotonic', time.monotonic), ('perf_counter', time.perf_counter), ('process_time', time.process_time), ('time', time.time), ] for clock_name, func in available_clocks: print(textwrap.dedent(''' : adjustable : implementation: monotonic : resolution : current : ''').format( name=clock_name, info=time.get_clock_info(clock_name), current=func()) )
Этот вывод для Mac OS X показывает, что Python time таймеры monotonic и perf_counter реализованы с использованием одного и того же базового системного вызова:
$ python3 time_get_clock_info.py clock: adjustable : False implementation: clock() monotonic : True resolution : 1e-06 current : 0.028399 monotonic: adjustable : False implementation: mach_absolute_time() monotonic : True resolution : 1e-09 current : 172336.002232467 perf_counter: adjustable : False implementation: mach_absolute_time() monotonic : True resolution : 1e-09 current : 172336.002280763 process_time: adjustable : False implementation: getrusage(RUSAGE_SELF) monotonic : True resolution : 1e-06 current : 0.028593 time: adjustable : True implementation: gettimeofday() monotonic : False resolution : 1e-06 current : 1471198232.045526
С помощью функции pd.read_excel можно считывать данные из Excel-файлов в pandas DataFrame.
Основной таймер в Python
Одной из функций, которую предоставляет модуль time Python является функция time() , которая возвращает количество секунд с момента начала «эпохи» в виде значения с плавающей запятой:
time_time.py import time print('The time is:', time.time())
Эпоха — это начало измерения времени, которым для систем Unix является 0:00 1 января 1970 года. Хотя значение всегда является числом с плавающей запятой, фактическая точность зависит от платформы:
$ python3 time_time.py The time is: 1471198232.091589
Десятичная дробь полезна при хранении или сравнении дат, но не для создания читаемых человеком представлений. Для регистрации или вывода времени более полезной может оказаться функция ctime() :
$ python3 time_ctime.py The time is : Sun Aug 14 14:10:32 2016 15 secs from now : Sun Aug 14 14:10:47 2016
Второй вызов print() в этом примере иллюстрирует, как использовать ctime() для форматирования значения времени, которое отличается от текущего:
$ python3 time_ctime.py The time is : Sun Aug 14 14:10:32 2016 15 secs from now : Sun Aug 14 14:10:47 2016
Таймер относительного времени
Python time() использует системные часы, которые часы могут быть изменены пользовательскими или системными службами для синхронизации часов на нескольких компьютерах. Поэтому повторяющиеся вызовы time() могут давать значения, которые отличаются в большую или в меньшую сторону. Это может привести к неожиданному поведению при попытке измерения промежутка времени.
Избегайте таких ситуаций путем использования функции monotonic() , у которой возвращаемое при повторном вызове значение всегда больше предыдущего:
time_monotonic.py import time start = time.monotonic() time.sleep(0.1) end = time.monotonic() print('start : 9.2f>'.format(start)) print('end : 9.2f>'.format(end)) print('span : 9.2f>'.format(end - start))
Начальная точка для относительных таймеров не определена, поэтому возвращаемые значения могут использоваться только для расчетов с другими значениями времени. В этом примере продолжительность спящего режима измеряется с помощью monotonic() :
$ python3 time_monotonic.py start : 172336.14 end : 172336.24 span : 0.10
Таймер процессора
В то время как time() возвращает время основных часов, clock() возвращает время процессора. Для этого можно использовать Python get time .
Значения, возвращаемые функцией clock() , отражают фактическое время, используемое программой при ее запуске:
time_clock.py import hashlib import time # Данные, используемые для вычисления контрольной суммы md5 data = open(__file__, 'rb').read() for i in range(5): h = hashlib.sha1() print(time.ctime(), ': '.format( time.time(), time.clock())) for i in range(300000): h.update(data) cksum = h.digest()
Как сделать таймер на JavaScript для ваших веб-проектов.
В этом примере отформатированная ctime() выводится вместе со значениями с плавающей запятой из time() и clock() через цикл для каждой итерации.
Примечание
Если хотите запустить этот код в своей системе, то может потребоваться добавить во внутренний цикл другие циклы или придется работать с большим количеством данных, чтобы увидеть разницу во времени с помощью Python time :
$ python3 time_clock.py Sun Aug 14 14:10:32 2016 : 1471198232.327 0.033 Sun Aug 14 14:10:32 2016 : 1471198232.705 0.409 Sun Aug 14 14:10:33 2016 : 1471198233.086 0.787 Sun Aug 14 14:10:33 2016 : 1471198233.466 1.166 Sun Aug 14 14:10:33 2016 : 1471198233.842 1.540
Как правило, часы процессора ничего не засекают, если программа ничего не делает:
time_clock_sleep.py import time template = '<> - - ' print(template.format( time.ctime(), time.time(), time.clock()) ) for i in range(3, 0, -1): print('Sleeping', i) time.sleep(i) print(template.format( time.ctime(), time.time(), time.clock()) )
В этом примере time sleep python цикл выполняет мало действий, переходя в спящий режим после каждой итерации. Значение time() увеличивается даже тогда, когда приложение находится в спящем режиме, но значение clock() отсутствует:
$ python3 -u time_clock_sleep.py Sun Aug 14 14:10:34 2016 - 1471198234.28 - 0.03 Sleeping 3 Sun Aug 14 14:10:37 2016 - 1471198237.28 - 0.03 Sleeping 2 Sun Aug 14 14:10:39 2016 - 1471198239.29 - 0.03 Sleeping 1 Sun Aug 14 14:10:40 2016 - 1471198240.29 - 0.03
Вызов sleep() передает управление из текущего потока и указывает ожидать, пока система активирует его. Если программа имеет только один поток, это эффективно блокирует приложение, и оно не работает.
Счетчик производительности
Для измерения производительности важно иметь таймеры monotonic с высокой точностью. Определение наилучшего источника данных синхронизации требует наличия информации о платформе, которую Python предоставляет в perf_counter() :
time_perf_counter.py import hashlib import time # Data to use to calculate md5 checksums data = open(__file__, 'rb').read() loop_start = time.perf_counter() for i in range(5): iter_start = time.perf_counter() h = hashlib.sha1() for i in range(300000): h.update(data) cksum = h.digest() now = time.perf_counter() loop_elapsed = now - loop_start iter_elapsed = now - iter_start print(time.ctime(), ': '.format( iter_elapsed, loop_elapsed))
Как и в случае с функцией Python time monotonic() , эпоха для perf_counter() не определяется. Значения предназначены для сравнения и вычисления, а не в качестве абсолютных значений:
$ python3 time_perf_counter.py Sun Aug 14 14:10:40 2016 : 0.487 0.487 Sun Aug 14 14:10:41 2016 : 0.485 0.973 Sun Aug 14 14:10:41 2016 : 0.494 1.466 Sun Aug 14 14:10:42 2016 : 0.487 1.953 Sun Aug 14 14:10:42 2016 : 0.480 2.434
Компоненты времени
Хранимое в виде прошедших секунд время используется в некоторых ситуациях. Но иногда программа должна иметь доступ к отдельным полям даты ( год, месяц и т. д .). Модуль времени определяет struct_time для хранения значений даты и времени с разбитыми компонентами, поэтому они легко доступны. Существует несколько функций, которые работают со значениями struct_time вместо float :
time_struct.py import time def show_struct(s): print(' tm_year :', s.tm_year) print(' tm_mon :', s.tm_mon) print(' tm_mday :', s.tm_mday) print(' tm_hour :', s.tm_hour) print(' tm_min :', s.tm_min) print(' tm_sec :', s.tm_sec) print(' tm_wday :', s.tm_wday) print(' tm_yday :', s.tm_yday) print(' tm_isdst:', s.tm_isdst) print('gmtime:') show_struct(time.gmtime()) print('nlocaltime:') show_struct(time.localtime()) print('nmktime:', time.mktime(time.localtime()))
Использование Pandas datetime облегчает работу с датами и временем в анализе данных.
Функция gmtime() , которую предоставляет модуль time Python возвращает текущее время в UTC . Localtime() возвращает текущее время с использованием текущего часового пояса. Mktime() принимает struct_time и преобразует его в формат с плавающей запятой:
$ python3 time_struct.py gmtime: tm_year : 2016 tm_mon : 8 tm_mday : 14 tm_hour : 18 tm_min : 10 tm_sec : 42 tm_wday : 6 tm_yday : 227 tm_isdst: 0 localtime: tm_year : 2016 tm_mon : 8 tm_mday : 14 tm_hour : 14 tm_min : 10 tm_sec : 42 tm_wday : 6 tm_yday : 227 tm_isdst: 1 mktime: 1471198242.0
Работа с часовыми поясами
Выбор функции для определения текущего времени зависит от того, установлен ли часовой пояс программой или системой. Изменение часового пояса не изменяет фактическое время — только способ его представления.
Чтобы изменить часовой пояс, установите переменную среды TZ , затем вызовите tzset() . Часовой пояс можно указать с различными данными, вплоть до времени начала и завершения периода так называемого « летнего » времени. Проще всего использовать название часового пояса, но базовые библиотеки получают и другую информацию.
Приведенная ниже программа без time sleep python , и задает несколько разных значений для часового пояса и показывает, как изменения влияют на другие настройки в модуле времени:
time_timezone.py import time import os def show_zone_info(): print(' TZ :', os.environ.get('TZ', '(not set)')) print(' tzname:', time.tzname) print(' Zone : <> (<>)'.format( time.timezone, (time.timezone / 3600))) print(' DST :', time.daylight) print(' Time :', time.ctime()) print() print('Default :') show_zone_info() ZONES = [ 'GMT', 'Europe/Amsterdam', ] for zone in ZONES: os.environ['TZ'] = zone time.tzset() print(zone, ':') show_zone_info()
Часовой пояс по умолчанию для системы, используемой в примерах — US / Eastern . Другие зоны в примере, который позволяет реализовать модуль time Python изменяют значение tzname , продолжительности светового дня и значение смещения часового пояса:
$ python3 time_timezone.py Default : TZ : (not set) tzname: ('EST', 'EDT') Zone : 18000 (5.0) DST : 1 Time : Sun Aug 14 14:10:42 2016 GMT : TZ : GMT tzname: ('GMT', 'GMT') Zone : 0 (0.0) DST : 0 Time : Sun Aug 14 18:10:42 2016 Europe/Amsterdam : TZ : Europe/Amsterdam tzname: ('CET', 'CEST') Zone : -3600 (-1.0) DST : 1 Time : Sun Aug 14 20:10:42 2016
Обработка и форматирование времени
Функции strptime() и strftime() преобразуют struct_time в строковые представления значений времени и наоборот. Существует длинный список инструкций по форматированию для поддержки ввода и вывода в разных форматах. Полный список указан в документации библиотеки для модуля time.
В приведенном ниже примере использования модуля time Python текущее время преобразуется из строки в экземпляр struct_time и обратно в строку:
time_strptime.py import time def show_struct(s): print(' tm_year :', s.tm_year) print(' tm_mon :', s.tm_mon) print(' tm_mday :', s.tm_mday) print(' tm_hour :', s.tm_hour) print(' tm_min :', s.tm_min) print(' tm_sec :', s.tm_sec) print(' tm_wday :', s.tm_wday) print(' tm_yday :', s.tm_yday) print(' tm_isdst:', s.tm_isdst) now = time.ctime(1483391847.433716) print('Now:', now) parsed = time.strptime(now) print('nParsed:') show_struct(parsed) print('nFormatted:', time.strftime("%a %b %d %H:%M:%S %Y", parsed))
В примере с time strftime Python строка вывода не такая же, как и входная, так как день месяца имеет префикс с нулем:
$ python3 time_strptime.py Now: Mon Jan 2 16:17:27 2017 Parsed: tm_year : 2017 tm_mon : 1 tm_mday : 2 tm_hour : 16 tm_min : 17 tm_sec : 27 tm_wday : 0 tm_yday : 2 tm_isdst: -1 Formatted: Mon Jan 02 16:17:27 2017
Как сделать таймер в Python 3.x?
Как сделать таймер в Питоне для подсчета времени? То есть таймер, который будет проверять сколько прошло секунд с указанного момента и если пройдет 5 больше секунд программа должна завершать свою работу.
Отслеживать
задан 19 фев 2018 в 14:48
Boris Makhlin Boris Makhlin
111 8 8 бронзовых знаков
связанный вопрос Как правильно сделать временный цикл?
19 фев 2018 в 15:45
что вы хотите, чтобы в течении 5 секунд происходило перед выходом из программы?
19 фев 2018 в 15:46
19 фев 2018 в 21:51
Возможный дубликат вопроса: Как правильно сделать временный цикл?
20 фев 2018 в 7:24
22 фев 2018 в 22:47
1 ответ 1
Сортировка: Сброс на вариант по умолчанию
Ну. если пройдёт 5 секунд. Здесь несколько вариантов. Опишите нужный вам. Я приведу два:
Если вам нужно просто ожидание в течение 5 секунд и выход из кода, то просто используйте библиотеку time:
import time #ваш код time.sleep(5) #"засыпание" выполнения кода на 5 секунд #тут не пишите ничего и программа сама завершиться, ну или же используйте exit()
Вам нужно, чтобы в течение 5 секунд выполнялся код и потом он выходил, тогда нужно использовать потоки (модуль threading) и тот же модуль time:
import threading import time #создаём функцию для нашего потока, которая будет закрывать код через 5 секунд вне зависимости от обстоятельств def timer(): time.sleep(5) exit() thread1 = threading.Thread(target=time, name="thread1_name") #создаём поток thread1 и указываем ему на уже созданную функцию timer thread1.start() # начинаем поток #тут ваш код
Итог: выполняется ваш код и через пять секунд, после его начала, код закрывается (если же вы раньше пяти секунд не использовали exit() )
Как сделать таймер в Питоне: простой и практичный гид
В этом примере мы создали функцию timer, которая принимает количество секунд в качестве аргумента. Функция начинает отсчет времени с помощью time.time() и продолжает выполнение цикла, пока не пройдет указанное количество секунд. Затем таймер останавливается.
Детальный ответ
Как сделать таймер в Python
Создание таймера в Python может быть полезным для многих задач, от замера времени выполнения программы до ожидания определенного интервала времени. В этой статье мы рассмотрим различные подходы к созданию таймера в Python.
Использование модуля time
Встроенный модуль time в Python предоставляет функциональность для работы с временем. Для создания таймера можно использовать функции time.time() и time.sleep().
import time start_time = time.time() # выполнение кода, для которого нужно измерить время end_time = time.time() elapsed_time = end_time - start_time print(f"Время выполнения: секунд")
В приведенном выше примере мы сохраняем текущее время в переменную start_time, выполняем код, для которого мы хотим измерить время, и затем сохраняем текущее время в переменную end_time. Разницу между end_time и start_time мы сохраняем в переменную elapsed_time, чтобы получить общее время выполнения.
Использование модуля datetime
Если вам нужно создать таймер, который работает с определенной датой и временем, вы можете использовать модуль datetime. Вот пример:
from datetime import datetime, timedelta start_time = datetime.now() # выполнение кода, для которого нужно измерить время end_time = datetime.now() elapsed_time = end_time - start_time print(f"Время выполнения: ")
Модуль datetime предоставляет функцию datetime.now(), которая возвращает текущую дату и время. Мы сохраняем время начала выполнения в переменную start_time, выполняем код, для которого мы хотим измерить время, и сохраняем время окончания выполнения в переменную end_time. Разницу между ними сохраняем в переменную elapsed_time.
Использование библиотеки timeit
Если вы хотите точно измерить время выполнения кода и учитывать факторы, такие как загрузка системы, вы можете использовать библиотеку timeit. Вот пример:
import timeit def code_to_measure(): # код, для которого нужно измерить время pass elapsed_time = timeit.timeit(code_to_measure, number=1) print(f"Время выполнения: секунд")
В приведенном выше примере мы определяем функцию code_to_measure, которая содержит код, для которого мы хотим измерить время выполнения. Функция timeit.timeit() измеряет время выполнения этой функции с помощью параметра number=1. Итоговое время выполнения сохраняется в переменную elapsed_time.
Задержка выполнения программы
Если вам нужно добавить задержку выполнения программы на определенное количество секунд, вы можете использовать функцию time.sleep(). Вот пример:
import time # код до задержки time.sleep(5) # Задержка на 5 секунд # код после задержки
В приведенном выше примере выполнение программы будет приостановлено на 5 секунд.
Заключение
В этой статье мы изучили различные способы создания таймера в Python с использованием встроенных модулей time и datetime, а также библиотеки timeit. Вы можете выбрать подход, который лучше всего соответствует вашим потребностям в конкретной ситуации.
Как сделать таймер в Python — подробная инструкция для начинающих️
В этом примере мы создаем функцию timer, которая принимает количество секунд в качестве аргумента. Функция использует функцию sleep из модуля time, чтобы приостановить выполнение программы на указанное количество секунд. После истечения времени, программа выводит сообщение «Таймер завершен!». Вы можете изменить значение переменной seconds, чтобы задать желаемое количество секунд для таймера.
Детальный ответ
Как сделать таймер в Python
Python — это мощный и гибкий язык программирования, который позволяет создавать различные приложения и инструменты. Если вы хотите создать собственный таймер с использованием Python, в этой статье я покажу вам, как это сделать.
Шаг 1: Импорт необходимых модулей
Первым шагом является импорт необходимых модулей для работы с временем и интерфейсом командной строки:
import time import os
Шаг 2: Получение времени от пользователя
Для создания таймера вам необходимо получить значение времени от пользователя. Вы можете сделать это с помощью функции input() и преобразовать полученное значение в целое число с помощью функции int() :
time_input = input("Введите количество секунд: ") total_seconds = int(time_input)
Здесь мы запрашиваем у пользователя количество секунд для таймера и преобразуем его в целое число total_seconds .
Шаг 3: Запуск таймера
Теперь, когда у нас есть значение времени, мы можем запустить таймер. Воспользуемся циклом while и функцией time.sleep() для создания задержки в одну секунду между отсчетами:
while total_seconds: minutes, seconds = divmod(total_seconds, 60) timer = ':'.format(minutes, seconds) print(timer, end='\r') time.sleep(1) total_seconds -= 1
В каждой итерации цикла мы делим общее количество секунд на 60, чтобы получить минуты и секунды. Затем форматируем их в виде строки с помощью метода format() и выводим на экран. Функция time.sleep() приостанавливает выполнение программы на одну секунду. После этого уменьшаем общее количество секунд на 1.
Шаг 4: Вывод сообщения после завершения таймера
После завершения отсчета таймера вам может понадобиться вывести определенное сообщение для пользователя. Например:
print("Таймер завершен!")
Полный код:
import time import os time_input = input("Введите количество секунд: ") total_seconds = int(time_input) while total_seconds: minutes, seconds = divmod(total_seconds, 60) timer = ':'.format(minutes, seconds) print(timer, end='\r') time.sleep(1) total_seconds -= 1 print("Таймер завершен!")
Теперь у вас есть полный код для создания простого таймера в Python. Вы можете запустить этот код и вводить количество секунд для отсчета. Когда таймер завершится, появится сообщение «Таймер завершен!». Удачи в создании своего собственного таймера в Python!