Содержание страницы
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]. Точные границы представлены в виде констант:
Функции часов¶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(), но не устанавливает исключение при ошибке и не требует присоединённого состояния потока.