Документация Python неофициальный перевод
Содержание страницы

PyTime C API

Добавлено в версии 3.13.

C API для работы с часами предоставляет доступ к системным часам. Оно аналогично модулю Python time.

Для C API, связанного с модулем datetime, см. Объекты даты и времени.

ТипыTypes

type PyTime_t

Отметка времени или длительность в наносекундах, представленная как 64-битное целое число со знаком.

Точка отсчета для отметок времени зависит от используемых часов. Например, PyTime_Time() возвращает отметки времени относительно эпохи UNIX.

Поддерживаемый диапазон составляет примерно [-292.3 года; +292.3 года]. Используя эпоху Unix (1 января 1970 г.) в качестве точки отсчёта, поддерживаемый диапазон дат составляет примерно [1677-09-21; 2262-04-11]. Точные границы представлены в виде констант:

PyTime_t PyTime_MIN

Минимальное значение PyTime_t.

PyTime_t PyTime_MAX

Максимальное значение PyTime_t.

Функции часовClock Functions

Следующие функции принимают указатель на PyTime_t, который они устанавливают в значение конкретных часов. Подробности о каждом типе часов приведены в документации соответствующей функции Python.

Функции возвращают 0 в случае успеха или -1 (с установленным исключением) при ошибке.

При целочисленном переполнении они устанавливают исключение PyExc_OverflowError и устанавливают *result в значение, ограниченное диапазоном [PyTime_MIN; PyTime_MAX]. (В современных системах целочисленные переполнения, скорее всего, вызваны неправильной конфигурацией системного времени.)

Как и любой другой C API (если не указано иное), функции должны вызываться с присоединённым состоянием потока.

int PyTime_Monotonic(PyTime_t *result)

Читает монотонные часы. См. time.monotonic() для получения важных подробностей об этих часах.

int PyTime_PerfCounter(PyTime_t *result)

Читает счётчик производительности. См. time.perf_counter() для получения важных подробностей об этих часах.

int PyTime_Time(PyTime_t *result)

Читает время «настенных часов». См. time.time() для получения важных подробностей об этих часах.

Функции сырых часовRaw Clock Functions

Аналогичны функциям часов, но не устанавливают исключение при ошибке и не требуют от вызывающего кода наличия присоединённого состояния потока.

В случае успеха функции возвращают 0.

При ошибке они устанавливают *result в 0 и возвращают -1, не устанавливая исключение. Чтобы выяснить причину ошибки, присоедините состояние потока, и вызовите обычную (не-Raw) функцию. Обратите внимание, что обычная функция может выполниться успешно после того, как Raw потерпела неудачу.

int PyTime_MonotonicRaw(PyTime_t *result)

Похож на PyTime_Monotonic(), но не устанавливает исключение при ошибке и не требует присоединённого состояния потока.

int PyTime_PerfCounterRaw(PyTime_t *result)

Похож на PyTime_PerfCounter(), но не устанавливает исключение при ошибке и не требует присоединённого состояния потока.

int PyTime_TimeRaw(PyTime_t *result)

Похож на PyTime_Time(), но не устанавливает исключение при ошибке и не требует присоединённого состояния потока.

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

double PyTime_AsSecondsDouble(PyTime_t t)

Преобразует временную метку в количество секунд в виде double языка C.

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