Python

PyTime C API

Added in version 3.13.

clock C API는 시스템 시계에 대한 접근을 제공합니다. 이는 파이썬의 time 모듈과 유사합니다.

datetime 모듈과 관련된 C API는 DateTime 객체 를 참조하십시오.

타입

type PyTime_t

부호 있는 64비트 정수로 표현된 나노초 단위의 타임스탬프 또는 지속 시간입니다.

타임스탬프의 기준점은 사용되는 시계에 따라 달라집니다. 예를 들어, PyTime_Time() 은 UNIX 에포크(epoch)를 기준으로 한 타임스탬프를 반환합니다.

지원 범위는 약 [-292.3년; +292.3년]입니다. Unix 에포크(1970년 1월 1일)를 기준으로 할 때, 지원되는 날짜 범위는 대략 [1677-09-21; 2262-04-11]입니다. 정확한 한계값은 상수로 제공됩니다:

PyTime_t PyTime_MIN

PyTime_t 의 최소값입니다.

PyTime_t PyTime_MAX

PyTime_t 의 최대값입니다.

시계 함수

다음 함수들은 특정 시계의 값을 할당할 PyTime_t 포인터를 매개변수로 받습니다. 각 시계에 대한 상세 정보는 해당 파이썬 함수의 문서에서 확인할 수 있습니다.

함수는 성공 시 0 을 반환하고, 실패 시 -1 (예외 설정 포함)을 반환합니다.

정수 오버플로 발생 시, PyExc_OverflowError 예외를 설정하고 *result``을 ``[PyTime_MIN; PyTime_MAX] 범위 내의 값으로 제한(clamp)하여 설정합니다. (현재 시스템에서 정수 오버플로는 대개 잘못 구성된 시스템 시간으로 인해 발생할 가능성이 높습니다.)

다른 모든 C API와 마찬가지로(별도로 명시되지 않는 한), 이 함수들은 attached thread state 가 있는 상태에서 호출되어야 합니다.

int PyTime_Monotonic(PyTime_t *result)

단조 시계(monotonic clock)를 읽습니다. 이 시계에 대한 중요한 세부 사항은 time.monotonic() 을 참조하십시오.

int PyTime_PerfCounter(PyTime_t *result)

성능 카운터(performance counter)를 읽습니다. 이 시계에 대한 중요한 세부 사항은 time.perf_counter() 를 참조하십시오.

int PyTime_Time(PyTime_t *result)

“벽시계(wall clock)” 시간을 읽습니다. 이 시계에 대한 중요한 세부 사항은 time.time() 을 참조하십시오.

Raw 시계 함수

시계 함수와 유사하지만, 에러 발생 시 예외를 설정하지 않으며 호출자가 attached thread state 를 보유할 필요가 없습니다.

성공 시, 함수는 0 을 반환합니다.

실패 시, 예외를 설정하지 않고 *result0 으로 설정한 후 -1 을 반환합니다. 에러의 원인을 파악하려면 thread stateattach 하고 일반(Raw이 아닌) 함수를 호출하십시오. 주의할 점은, Raw 함수가 실패했더라도 일반 함수는 성공할 수 있다는 것입니다.

int PyTime_MonotonicRaw(PyTime_t *result)

PyTime_Monotonic() 과 유사하지만, 에러 시 예외를 설정하지 않으며 attached thread state 를 요구하지 않습니다.

int PyTime_PerfCounterRaw(PyTime_t *result)

PyTime_PerfCounter() 와 유사하지만, 에러 시 예외를 설정하지 않으며 attached thread state 를 요구하지 않습니다.

int PyTime_TimeRaw(PyTime_t *result)

PyTime_Time() 와 유사하지만, 에러 시 예외를 설정하지 않으며 attached thread state 를 요구하지 않습니다.

변환 함수

double PyTime_AsSecondsDouble(PyTime_t t)

타임스탬프를 C double 타입의 초 단위 숫자로 변환합니다.

이 함수는 실패하지 않으나, double 은 큰 값에 대해 정확도가 제한될 수 있음에 유의하십시오.