Модуль time
Модуль time из стандартной библиотеки языка программирования Python содержит массу полезных методов для работы со временем. С его помощью можно получать информацию о текущей дате и времени с точностью до миллисекунд, выводить эти сведения в необходимом формате, а также управлять ходом выполнения программы, добавляя задержки по таймеру.
Текущее время в Python
Работа методов из модуля time основывается на общепринятой системе описания времени, которая справедлива для Unix, а также для POSIX-совместимых ОС. Согласно ее концепции, текущее время представляется в виде обыкновенного вещественного значения в секундах, прошедших с момента начала эпохи и до сегодняшнего дня. Отправной точкой для времени считается 1 января 1970 года, когда счетчик секунд имел полностью нулевое значение.
С тех пор это число постоянно растет, позволяя людям работать с различными видами дат в максимально точном представлении. В случае необходимости секунды переводятся в часы, дни, месяцы и годы, предоставляя пользователю удобный вид отображения времени. Чтобы увидеть количество секунд, прошедших с момента начала эпохи, достаточно вызвать метод time(). Но перед этим необходимо подключить модуль time с помощью операции импорта.
Как можно увидеть из данного примера, функция print получает в качестве единственного параметра число, возвращенное из метода time(), после чего выводит его на экран. Таким образом, с 1 января 1970 года прошло уже более полтора миллиарда секунд. Но подобное представление времени совсем неудобно для пользователя программы. Чтобы отобразить текущую дату в более комфортном виде, стоит передать функции print результат работы метода ctime(), не забыв произвести импорт соответствующей ему библиотеки time.
В результате выполнения вышеописанной программы на экране будут отображены точные сведения о текущем времени, которые включают в себя день недели, название месяца, его число, часы, минуты, секунды и год. Кроме того, в качестве параметра методу ctime() можно передать любое значение в секундах, полученное при помощи упомянутого ранее time().
Методы
Для работы с временем в стандартной библиотеке языка Python имеется множество самых разных методов. Наиболее популярные функции, реализованные в модуле time, описаны в следующей таблице. Здесь можно найти их название, а также краткую характеристику.
| Метод | Характеристика |
| time() | возвращает текущее время, прошедшее с начала 1970 года в секундах |
| ctime(s) | возвращает местное время в строке или время, полученное из s секунд |
| clock() | возвращает процессорное время, прошедшее с момента первого вызова этой функции, точность больше 1 микросекунды |
| sleep(s) | останавливает ход выполнения программы ровно на s секунд |
| strftime(s) | преобразует переданное в качестве аргумента время s в строку по формату |
| strptime(s) | разбирает строку s и преобразует в объект времени по формату |
| mktime(s) | преобразует время s в количество секунд с начала 1970 года |
| localtime(s) | возвращает объект, представляющий местное время или время s |
Форматированный вывод
Принцип работы метода ctime() заключается в представлении секундного вещественного значения в более удобном виде, благодаря автоматическому форматированию. Некоторым пользователям предложенный подобным образом вывод данных может показаться чересчур сложным для восприятия либо же недостаточно информативным. Именно поэтому методы модуля time позволяют создавать свои уникальные типы форматирования для дат. В данном случае речь пойдет о функции strftime, принимающей в качестве параметров текущее время и шаблон, который будет использоваться для форматирования полученного объекта.
В следующем примере демонстрируется вывод значения, переданного функцией localtime() в strftime. То есть, мы в Python получим текущее время и выведем его в отформатированном виде. Первым аргументом метода strftime является строка с некоторым набором правил для форматирования, каждое из которых указано при помощи символа %. В результате, на экране выводится информация, включающая название месяца, число и год.
Существует большое количество символов форматирования, отвечающих за отображение отдельных свойств объекта, представляющего собой дату. Важно запомнить, что каждое новое правило необходимо отделять знаком %. Все доступные типы форматов для вывода данных о времени подробно описаны в следующей таблице. Их можно передавать методу strftime в любом порядке, помещая в строковый литерал, который служит параметром.
| Формат | Свойство |
| %a | короткое название дня недели |
| %A | полное название дня недели |
| %b | короткое название месяца |
| %B | полное название месяца |
| %c | дата и время |
| %d | день месяца |
| %H | количество часов в 24-часовом формате |
| %I | количество часов в 12-часовом 1формате |
| %j | день года |
| %m | номер месяца |
| %M | количество минут |
| %p | до или после полудня для 12-часового формата |
| %S | количество секунд |
| %U | номер недели в году, начиная с воскресенья |
| %w | номер дня недели |
| %W | номер недели в году, начиная с понедельника |
| %x | дата |
| %X | время |
| %y | год без указания века |
| %Y | полное представление года |
| %Z | название часового пояса |
| %% | символ процента |
Применение метода sleep
Выполнение многих задач в программировании так или иначе связано с течением времени. Иногда программа должна прекращать ход своего выполнения на определенное количество секунд, минут или часов. Это вполне может потребоваться в тех случаях, когда компьютер взаимодействует с какой-либо внешней системой, например, базой данных, которая должна завершить выполнение собственных задач, прежде чем перейти к следующему действию.
Перевести программу в ждущий режим, временно заморозив ее работу, можно при помощи метода sleep, доступного в модуле time. Его единственным аргументом является количество секунд, которое следует выждать программе, прежде чем перейти к дальнейшему шагу из прописанного алгоритма. В следующем фрагменте кода функция sleep работает 10 секунд.
Как можно увидеть из результатов выполнения кода, вначале на экран выводится стартовое сообщение, после чего программа прекращает свою работу ровно на 10 секунд, поскольку метод sleep получает переменную pause в качестве аргумента. Затем отображается последняя запись, информирующая пользователя о том, какое количество секунд длилась задержка.
Время выполнения программы
Существует множество разных задач, для решения которых нужно найти время, потраченное на работу программы либо отдельных ее блоков. Чтобы найти данную величину, достаточно посчитать разницу в секундах между точкой старта определенной функции и местом, где она завершает свою работу. В следующем примере демонстрируется применение методов time() для получения текущего времени, чтобы в конечном итоге выявить, как долго работал блок кода. Метод sleep() здесь увеличивает время выполнения программы на 5 секунд.
Несмотря на простоту вышеописанного подхода, использовать его в серьезных целях, где требуется точный и независимый от ОС результат, не рекомендуется. Все дело в том, что числовое значение времени, получаемое таким образом, может иметь погрешности за счет внутренних особенностей работы компьютера, в среде которого выполняется программа. Например, системные часы могут быть подкорректированы вручную пользователем во время выполнения программы. Корректировка может произойти и автоматически, если настроена синхронизация системных часов по NTP.
Таким образом, может случиться такая ситуация, что функция вернет значение меньшее, чем при предыдущем вызове.
monotonic
По этой причине лучше всего использовать метод monotonic(), впервые появившийся в версии Python 3.3 на некоторых платформах, а начиная с выпуска 3.5 ставший доступным абсолютно везде. Его главной особенностью является точное представление измеряемого количества времени, вне зависимости от работы ОС и текущей платформы. Используемый таймер никогда не вернет при повторном вызове метода значение, которое будет меньше предыдущего. Это позволяет избежать многих ошибок, а также неожиданного поведения.
В примере программы, описанном выше, продемонстрирована работа функции monotonic(). Принцип ее применения такой же, как и в предыдущем примере, однако здесь результат обладает гарантированной точностью и независим от внешних условий. Для отображения времени в более комфортной форме используется небольшое форматирование результата.
Заключение
Используя стандартный библиотечный модуль time в Python 3, можно всячески взаимодействовать с информацией о текущем времени. Таким образом, использование библиотеки дает возможность:
Модуль time в Python
Автор: Кольцов Д · Опубликовано 01.12.2020 · Обновлено 01.12.2020
В этой статье мы подробно рассмотрим модуль времени. Мы научимся использовать различные функции и методы, связанные со временем, определенные в модуле времени, с помощью примеров.
В Python есть модуль с именем time для обработки задач, связанных со временем. Чтобы использовать функции, определенные в модуле, нам нужно сначала импортировать модуль. Вот как:
Вот часто используемые функции, связанные со временем.
Python time.time()
Функция time() возвращает количество секунд, прошедших с начала эпохи.
Для системы Unix 1 января 1970 г., 00:00:00 по всемирному координированному времени ‒ это эпоха (точка, где начинается время).
time.ctime()
Функция time.ctime() принимает секунды, прошедшие с начала эпохи, в качестве аргумента и возвращает строку, представляющую местное время.
Если вы запустите программу, результат будет примерно таким:
time.sleep()
Функция sleep() приостанавливает (задерживает) выполнение текущего потока на заданное количество секунд.
Прежде чем говорить о других функциях, связанных со временем, давайте кратко рассмотрим класс time.struct_time.
Класс time.struct_time
Некоторые функции в модуле времени, такие как gmtime(), asctime() и т.д., либо принимают объект time.struct_time в качестве аргумента, либо возвращают его.
Вот пример объекта time.struct_time:
Значения (элементы) объекта time.struct_time доступны как с помощью индексов, так и атрибутов.
time.localtime()
Функция localtime() в Python принимает в качестве аргумента количество секунд, прошедших с начала эпохи, и возвращает struct_time по местному времени.
Когда вы запустите программу, результат будет примерно таким:
Если в localtime() не передается аргумент или None, используется значение, возвращаемое функцией time().
time.gmtime()
Функция gmtime() принимает в качестве аргумента количество секунд, прошедших с начала эпохи, и возвращает struct_time в формате UTC.
Когда вы запустите программу, вывод будет:
Если в gmtime() не передается аргумент или None, используется значение, возвращаемое time().
time.mktime()
Функция mktime() принимает struct_time (или кортеж, содержащий 9 элементов, соответствующих struct_time) в качестве аргумента и возвращает секунды, прошедшие с начала эпохи по местному времени. По сути, это функция, обратная localtime().
В приведенном ниже примере показано, как связаны mktime() и localtime():
Когда вы запустите программу, результат будет примерно таким:
time.asctime()
Функция asctime() принимает struct_time (или кортеж, содержащий 9 элементов, соответствующих struct_time) в качестве аргумента и возвращает строку, представляющую его. Вот пример:
Когда вы запустите программу, вывод будет:
time.strftime()
Функция strftime() принимает struct_time (или соответствующий ей кортеж) в качестве аргумента и возвращает строку, представляющую ее на основе используемого кода формата. Например:
Когда вы запустите программу, результат будет примерно таким:
Здесь % Y,% m,% d,% H и т.д. являются кодами формата:
time.strptime()
strptime() анализирует строку, представляющую время, и возвращает struct_time.
Модуль time в Python
Дальше перечислены самые распространенные функции, связанные со временем.
Python time.time()
Функция time() возвращает число секунд, прошедших с начала эпохи. Для операционных систем Unix 1 января 1970, 00:00:00 (UTC) — начало эпохи (момент, с которого время пошло).
Python time.ctime()
Функция time.ctime() принимает в качестве аргумента количество секунд, прошедших с начала эпохи, и возвращает строку, представляющую собой местное время.
Если запустить программу, то вывод будет выглядеть так:
Python time.sleep()
Функция sleep() откладывает исполнение текущего потока на данное количество секунд.
Класс time.struct_time
К значениям (элементам) объекта time.struct_time доступ можно получить как с помощью индексов, так и через атрибуты.
Python time.localtime()
Функция localtime() принимает в качестве аргумента количество секунд, прошедших с начала эпохи, и возвращает stuct_time в локальном времени.
Вывод этой программы будет следующим:
Python time.gmtime()
Функция gmtime() принимает в качестве аргумента количество секунд, прошедших с начала эпохи и возвращает struct_time в UTC.
Вывод этой программы будет следующим:
Python time.mktime()
Вывод будет следующий:
Python time.asctime()
Функция asctime() принимает struct_time (или кортеж, содержащий 9 значений, относящихся к struct_time ) в качестве аргумента и возвращает строку, представляющую собой дату.
Python time.strftime()
Функция strftime принимает stuct_time (или соответствующий кортеж) в качестве аргумента и возвращает строку с датой в зависимости от использованного формата. Например:
Вывод будет следующий:
Python time.strptime()
Time Python
Введение в тему
Программисты часто сталкиваются с задачами по обработке времени. Эти задачи не являются тривиальными, поскольку существует множество способов представления этих данных. Они зависят от региона и личных предпочтений человека, записывающего их. В этом уроке мы рассмотрим модуль стандартной библиотеки time Python, который предназначен для упрощения таких работ.
Для начала работы с этим модулем его необходимо добавить в Ваш код:
Python time time
ОС Unix была создана в 1970 году, а значит файл этой системы не мог быть создан ранее 1970-01-01. Поэтому для данной системы была принята точка отсчёта времени — 1 января 1970, 00:00:00 (UTC). Её назвали началом эпохи и время стали считать, как количество секунд (миллисекунд), прошедших с этого момента. Такой подход, де-факто, стал широко распространённым стандартом из-за однозначности определения времени. Функция time.time() даёт возможность узнать сколько на данный момент прошло секунд от начала эпохи.
Python time ctime
Для того, чтобы перевести результат вызова time.time() в местное время предусмотрена функция time.ctime(). В неё надо передать значение, которое вернула time.time() и time.ctime() вернёт строку, содержащую время в более привычном для человека виде.
Python time sleep
time.sleep() предназначена для остановки выполнения программы. Это функция используется чаще других, поскольку область её применения выходит за рамки обычной обработки времени.
В качестве параметра необходимо передать время задержки в секундах. Проверим её работу:
Класс time struct_time
Класс struct_time модуля time представляет собой тип набора значений времени, возвращаемых функциями time.gmtime(), time.localtime() и time.strptime(). Значения могут быть доступны по индексу и по имени атрибута. Данная коллекция является именованным кортежем.
Присутствуют следующие значения:
Класс struct_time состоит из следующих атрибутов:
tm_year: возвращает год по местному времени.
tm_hour: возвращает час конкретного местного времени.
tm_min: возвращает значение минут определенного местного времени.
tm_sec: возвращает значение секунд определенного местного времени.
tm_mon: возвращает месяц по местному времени.
tm_mday: возвращает дату месяца по местному времени.
tm_wday: возвращает значение дней недели, т.е. с 0 понедельника по 6 воскресенье.
tm_yday: возвращает номер конкретного дня в диапазоне от 1 до 366.
Работа с модулем времени(time) в Python
Модуль времени Python предоставляет нам различные функции для внедрения системного времени в наше приложение с помощью сценариев.
Чтобы начать работу с модулем времени, нам нужно импортировать его в наш скрипт python, используя следующую инструкцию:
При выполнении операций с данными, относящимися к метке времени, необходимо иметь отправную точку, с которой мы можем начать выполнять операции с ними.
Эпоха — это начальная точка времени, от которой следует отсчитывать время.
Функции модуля времени Python
Модуль времени Python предлагает хороший набор функций для работы с отметкой времени.
Ниже приведены наиболее часто используемые функции:
1 метод time.time()
В модуле времени Python есть метод time.time() который дает секунды текущего местного времени.
2 метод time.sleep()
Метод time.sleep() обеспечивает интервал времени или задержку между выполнением текущих процессов или потоков.
В приведенном выше фрагменте кода, когда мы пытаемся выполнить приведенный выше код, можно легко наблюдать задержку, пока операторы вывода отображаются на консоли.
3 метод time.localtime()
Модуль времени Python содержит класс struct_time, доступ к которому можно получить с помощью различных функций. Это помогает нам получить доступ к различным полям местной метки времени, таким как год, час, секунды и т. д.
Класс struct_time состоит из следующих атрибутов:
Функция time.localtime() запускает функцию time.time() в серверной части и возвращает детали текущего времени в формате класса struct_time по местному времени.
Мы также можем передать количество секунд с начала эпохи в качестве аргумента функции.
4 метод time.ctime()
Метод time.ctime() принимает значение секунд с начала или результат функции time() в качестве аргумента и возвращает строковое значение, представляющее текущее местное время.
5 Метод time.mktime()
Метод time.mktime() является обратным методу time.localtime().
Он принимает struct_time (все кортежи класса struct_time) в качестве аргумента и возвращает время в секундах, которое прошло с начала.
В приведенном выше примере мы использовали метод locatime() для получения кортежей класса struct_time и передали его методу mktime().
6 Метод time.gmtime()
Функция time.gmtime() запускает функцию time.time() в серверной части и возвращает детали текущего времени в формате класса struct_time в UTC.
7 метод time.strptime()
Метод time.strptime() принимает строку, представляющую время, и возвращает сведения о времени в формате struct_time.




