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, который они устанавливают в значение определенных часов. Подробности о каждом часе приведены в документации к соответствующей функции 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.