Функции модуля time. Функции time() и ctime()

Курс по стандартной библиотеке: https://stepik.org/a/259466?utm_source=proproprogs

Смотреть материал на YouTube | RuTube

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

Функции получения системного времени

time()

время в секундах, прошедшее с эпохи UNIX (1 января 1970 года)

monotonic()

монотонно возрастающее время независимо от настроек системных часов (монотонные часы)

clock()

процессорное время (устаревшая функция)

perf_counter()

монотонные часы с высокой разрешающей способностью

process_time()

время, потраченное ЦП непосредственно на исполнение программы, исключая периоды ожидания

Функции преобразования времени

localtime()

преобразует время из секунд в структуру struct_time

mktime()

преобразует время из структуры struct_time в секунды

gmtime()

возвращает текущее время в виде структуры struct_time

ctime()

преобразует время из секунд в удобочитаемое строковое представление

strftime()

преобразует строковое представление времени в структуру struct_time

strptime()

преобразует структуру struct_time в строковое представление

Дополнительные функции

sleep()

задержка выполнения на указанное количество секунд (может быть дробным значением)

tzset()

установка часового пояса

get_clock_info()

получение информации о реализации функций работы с временем

Рассматривать эти функции мы будем в порядке удобном для понимания принципов их работы. Сразу отмечу, что работа многих функций работы со временем зависит от конкретной платформы (ОС, разрядность процессора и т.п.) и базируются на соответствующих функциях языка Си, так как интерпретатор Python реализован на этом языке программирования. Для получения детальной информации можно воспользоваться функцией get_clock_info(), например, следующим образом:

import time
 
funcs = [
    ("time", time.time),
    ("monotonic", time.monotonic),
    ("perf_counter", time.perf_counter),
    ("process_time", time.process_time),
]
 
for name, func in funcs:
    print(f"{name}: {time.get_clock_info(name)}")
    print(f"{name}: res = {func()}")

В консоли увидим строчки:

time: namespace(implementation='GetSystemTimePreciseAsFileTime()', monotonic=False, adjustable=True, resolution=1e-07)
time: res = 1756971772.9614265
monotonic: namespace(implementation='QueryPerformanceCounter()', monotonic=True, adjustable=False, resolution=1e-07)
monotonic: res = 97582.0831457
perf_counter: namespace(implementation='QueryPerformanceCounter()', monotonic=True, adjustable=False, resolution=1e-07)
perf_counter: res = 97582.0831619
process_time: namespace(implementation='GetProcessTimes()', monotonic=True, adjustable=False, resolution=1e-07)
process_time: res = 0.03125

Как видите, разные функции модуля time использую разные системные функции с разрешающей способностью resolution=1e-07. У вас может быть другая информация. Все зависит от конкретного железа и ОС. Давайте разберемся в работе функций модуля time и начнем с первой функции, которая так и называется time().

Функции time() и ctime()

Эта функция возвращает время в секундах, прошедшее с начала эпохи UNIX, то есть, с 1 января 1970 года:

import time
 
t = time.time()
print(t)  # 1751950525.9293613

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

Чтобы перевести это значение в понятную дату для пользователя, можно воспользоваться функцией ctime():

print(time.ctime(t))  # Tue Jul  8 08:57:52 2025

На самом деле вызов:

res = time.ctime(time.time())

эквивалентен вызову:

res2 = time.ctime()

То есть, функция ctime() возвращает текущее строковое представление времени, если ей не передается никакого аргумента. А при указании конкретного времени – строковое представление этого времени. Например:

t = time.time()
res = time.ctime(t)  # передано время t
res2 = time.ctime(t - 100)  # время на 100 секунд назад

Возвращаясь к функции time(), следует отменить, что она, конечно, ориентируется на системное время, установленное на компьютере. Если его изменить, то изменится и выдаваемое значение (после изменения системного времени):

t = time.time()  # 1751691723.20975 (Sat Jul  5 09:02:03 2025)

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

import time
 
file_path = "start_python.docx"
with open(file_path, "rb") as file:
    start_time = time.time()
    content = file.read()
    end_time = time.time()
 
    size_in_bytes = len(content)
    execution_time = end_time - start_time
    speed_bps = size_in_bytes / execution_time if execution_time > 0 else float('inf')
 
    print(f"Скорость чтения: {speed_bps:.2f} Б/с")

В консоли увидим (значение зависит от компьютера):

Скорость чтения: 125077586.04 Б/с

Курс по стандартной библиотеке: https://stepik.org/a/259466?utm_source=proproprogs

Видео по теме