PyTime C API

Added in version 3.13.

クロック C API は、システムクロックへのアクセスを提供します。これは Python の time モジュールに似ています。

datetime モジュールに関連する C API については、DateTime オブジェクト を参照してください。

型

type 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)

実時間 (wall clock time) を読み取ります。 このクロックに関する重要な詳細は time.time() を参照してください。

Raw クロック関数

クロック関数と同様ですが、エラー時に例外を設定せず、呼び出し元に アタッチされたスレッド状態 がなくても使えます。

成功した場合は 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 の精度には限りがあることに注意してください。