PyTime C API

在 3.13 版本加入。

时钟 C API 提供对系统时钟的访问。它类似于 Python 的 time 模块。

有关 datetime 模块的 C API,请参阅 DateTime 对象

类型

类型 PyTime_t

以纳秒表示的时间戳或持续时间,表示为带符号的 64 位整数。

时间戳的参考点取决于所使用的时钟。例如,PyTime_Time() 返回相对于 UNIX 纪元的时间戳。

支持的范围大约是 [-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 类型的指针,并将其设置为特定时钟的值。每个时钟的详细信息在相应的 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()

原始时钟函数

类似于时钟函数,但不会在错误时设置异常,也不要求调用者具有 已附加线程状态

成功时,函数返回 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(),但不会在错误时设置异常,也不需要 已附加线程状态

转换函数

double PyTime_AsSecondsDouble(PyTime_t t)

将时间戳转换为 C double 类型的秒数。

此函数不会失败,但请注意,double 对于大值具有有限的精度。