time.md
1> **Источник:** https://python-all.ru/3.15/c-api/time.html2>3> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.45---67# PyTime C API89Добавлено в версии 3.13.1011C API для работы с часами предоставляет доступ к системным часам. Оно аналогично модулю Python [`time`](https://python-all.ru/3.15/library/time.html#module-time).1213Для C API, связанного с модулем [`datetime`](https://python-all.ru/3.15/library/datetime.html#module-datetime), см. [Объекты даты и времени](https://python-all.ru/3.15/c-api/datetime.html#datetimeobjects).1415## Типы1617#### `type PyTime_t`1819Отметка времени или длительность в наносекундах, представленная как 64-битное целое число со знаком.2021Точка отсчета для отметок времени зависит от используемых часов. Например, [`PyTime_Time()`](https://python-all.ru/3.15/c-api/time.html#c.PyTime_Time) возвращает отметки времени относительно эпохи UNIX.2223Поддерживаемый диапазон составляет примерно \[-292.3 года; +292.3 года\]. Используя эпоху Unix (1 января 1970 г.) в качестве точки отсчёта, поддерживаемый диапазон дат составляет примерно \[1677-09-21; 2262-04-11\]. Точные границы представлены в виде констант:2425#### `PyTime_t PyTime_MIN`2627Минимальное значение [`PyTime_t`](https://python-all.ru/3.15/c-api/time.html#c.PyTime_t).2829#### `PyTime_t PyTime_MAX`3031Максимальное значение [`PyTime_t`](https://python-all.ru/3.15/c-api/time.html#c.PyTime_t).3233## Функции часов3435Следующие функции принимают указатель на [PyTime\_t](https://python-all.ru/3.15/c-api/time.html#c.PyTime_t), который они устанавливают в значение конкретных часов. Подробности о каждом типе часов приведены в документации соответствующей функции Python.3637Функции возвращают `0` в случае успеха или `-1` (с установленным исключением) при ошибке.3839При целочисленном переполнении они устанавливают исключение [`PyExc_OverflowError`](https://python-all.ru/3.15/c-api/exceptions.html#c.PyExc_OverflowError) и устанавливают `*result` в значение, ограниченное диапазоном `[PyTime_MIN; PyTime_MAX]`. (В современных системах целочисленные переполнения, скорее всего, вызваны неправильной конфигурацией системного времени.)4041Как и любой другой C API (если не указано иное), функции должны вызываться с [присоединённым состоянием потока](https://python-all.ru/3.15/glossary.html#term-attached-thread-state).4243#### `int PyTime_Monotonic(PyTime_t *result)`4445Читает монотонные часы. См. [`time.monotonic()`](https://python-all.ru/3.15/library/time.html#time.monotonic) для получения важных подробностей об этих часах.4647#### `int PyTime_PerfCounter(PyTime_t *result)`4849Читает счётчик производительности. См. [`time.perf_counter()`](https://python-all.ru/3.15/library/time.html#time.perf_counter) для получения важных подробностей об этих часах.5051#### `int PyTime_Time(PyTime_t *result)`5253Читает время «настенных часов». См. [`time.time()`](https://python-all.ru/3.15/library/time.html#time.time) для получения важных подробностей об этих часах.5455## Функции сырых часов5657Аналогичны функциям часов, но не устанавливают исключение при ошибке и не требуют от вызывающего кода наличия [присоединённого состояния потока](https://python-all.ru/3.15/glossary.html#term-attached-thread-state).5859В случае успеха функции возвращают `0`.6061При ошибке они устанавливают `*result` в `0` и возвращают `-1`, *не* устанавливая исключение. Чтобы выяснить причину ошибки, [присоедините](https://python-all.ru/3.15/glossary.html#term-attached-thread-state) [состояние потока](https://python-all.ru/3.15/glossary.html#term-thread-state), и вызовите обычную (не-`Raw`) функцию. Обратите внимание, что обычная функция может выполниться успешно после того, как `Raw` потерпела неудачу.6263#### `int PyTime_MonotonicRaw(PyTime_t *result)`6465Похож на [`PyTime_Monotonic()`](https://python-all.ru/3.15/c-api/time.html#c.PyTime_Monotonic), но не устанавливает исключение при ошибке и не требует [присоединённого состояния потока](https://python-all.ru/3.15/glossary.html#term-attached-thread-state).6667#### `int PyTime_PerfCounterRaw(PyTime_t *result)`6869Похож на [`PyTime_PerfCounter()`](https://python-all.ru/3.15/c-api/time.html#c.PyTime_PerfCounter), но не устанавливает исключение при ошибке и не требует [присоединённого состояния потока](https://python-all.ru/3.15/glossary.html#term-attached-thread-state).7071#### `int PyTime_TimeRaw(PyTime_t *result)`7273Похож на [`PyTime_Time()`](https://python-all.ru/3.15/c-api/time.html#c.PyTime_Time), но не устанавливает исключение при ошибке и не требует [присоединённого состояния потока](https://python-all.ru/3.15/glossary.html#term-attached-thread-state).7475## Функции преобразования7677#### `double PyTime_AsSecondsDouble(PyTime_t t)`7879Преобразует временную метку в количество секунд в виде double языка C.8081Функция не может завершиться ошибкой, но учтите, что double имеет ограниченную точность для больших значений.82