PyTime C API

Added in version 3.13.

API clock C предоставляет доступ к системным часам. Он похож на модуль Python time.

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

Типы

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.

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

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

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

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

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

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().

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

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

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

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

int PyTime_MonotonicRaw(PyTime_t *result)

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

int PyTime_PerfCounterRaw(PyTime_t *result)

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

int PyTime_TimeRaw(PyTime_t *result)

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

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

double PyTime_AsSecondsDouble(PyTime_t t)

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

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