PyTime C API¶
在 3.13 版本中新增。
时钟 C API 提供对系统时钟的访问。它类似于 Python 的 time
模块。
对于与 datetime
模块相关的 C API,请参阅 日期时间对象。
类型¶
-
type PyTime_t¶
以纳秒为单位的时间戳或持续时间,表示为有符号 64 位整数。
时间戳的参考点取决于所使用的时钟。例如,
PyTime_Time()
返回相对于 UNIX 纪元的时间戳。支持的范围大约为 [-292.3 年;+292.3 年]。以 Unix 纪元(1970 年 1 月 1 日)为参考,支持的日期范围约为 [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。