[解決済み] time.perf_counter()とtime.process_time()を理解する。
質問
新機能について質問があります
time.perf_counter()
と
time.process_time()
.
前者については、ドキュメントから。
パフォーマンスカウンターの値(端数秒)を返す、つまり 利用可能な最高の解像度を持つクロック を使用して短い時間を測定します。これはスリープ中に経過した時間を含み、システム全体である。返される値の基準点は不定であり、連続した呼び出しの結果の差分のみが有効である。
この「最高解像度」は、すべてのシステムで同じですか? それとも、たとえば、linux や windows を使用する場合、常にわずかに依存するのでしょうか?
time.time()
のドキュメントを読むと、「すべてのシステムが1秒より良い精度で時間を提供するわけではない」と書かれているので、今より良い、より高い解像度を提供することができるのでしょうか?
後者について。
time.process_time()
:
現在のプロセスのシステム CPU 時間とユーザー CPU 時間の合計の値を (秒の小数で) 返します。 スリープ中の経過時間は含まれません。定義上、プロセス全体です。返される値の基準点は不定であり、連続した呼び出しの結果の差分のみが有効である。
よくわからないんだけど、その「システム時間」と「ユーザCPU時間」って何?何が違うのでしょうか?
どのように解決するのですか?
時間には「絶対時間」と「相対時間」の2種類があります。
絶対時間とは「現実の時間」のことで、これは
time.time()
によって返され、私たちが扱うのに慣れている「現実の時間」です。これは通常、少なくとも 1 秒の分解能で過去の固定点 (たとえば、1970 年 1 月 1 日の 00:00:00 UTC の UNIX エポック) から測定されます。最近のシステムでは、通常ミリ秒またはマイクロ秒の解像度を提供する。RTC(リアルタイムクロック)回路は通常バッテリーで駆動するため、システムは電源投入の合間にも実時間を記録し続ける。この「現実の時間」は、場所(タイムゾーン)や季節(サマータイム)により変更されたり、UTCからのオフセット(GMTまたはズールー時間とも呼ばれる)として表現されることもあります。
次に、相対時間です。
time.perf_counter
と
time.process_time
. このタイプの時間は、現実の時間との関係がシステムや実装に依存するという意味で、定義されたものではありません。時間間隔、つまり2つのインスタントの間の経過時間に比例する単位のない値を測定するためにのみ使用することができます。これは主に相対的なパフォーマンスを評価するために使用されます (たとえば、このバージョンのコードがそのバージョンのコードよりも速く実行されるかどうか)。
最近のシステムでは、CPU のハードウェアクロックに関連する周波数で単調に増加する CPU カウンターを使用して測定されます。カウンターの分解能はシステムのハードウェアに大きく依存するため、その値を実世界の時間に確実に関連付けることはできませんし、ほとんどの場合、システム間で比較することさえできません。さらに、カウンターの値は、CPU の電源投入またはリセットが行われるたびにリセットされます。
time.perf_counter
はカウンタの絶対値を返します。
time.process_time
は CPU カウンターから派生した値ですが、特定のプロセスが CPU 上で実行されている場合にのみ更新され、プロセス自体が CPU 上で実行されている時間である「ユーザー タイム」と、プロセスの代わりにオペレーティング システム カーネルが CPU 上で実行されている時間である「システム タイム」に分割することが可能です。
関連
-
[解決済み] 関数デコレータを作成し、それらを連鎖させるには?
-
[解決済み] staticmethodとclassmethodの違いについて
-
[解決済み] スライス表記を理解する
-
[解決済み] 最小限の驚き」と「変更可能なデフォルトの引数
-
[解決済み】__str__と__repr__の違いは何ですか?
-
[解決済み] Django のテストデータベースをメモリ上だけで動作させるには?
-
[解決済み] DataFrameに日付間の日数カラムを追加する pandas
-
[解決済み] pycharmがタブをスペースに自動変換する
-
[解決済み] 単純な文字列からtimedeltaオブジェクトを作成する方法
-
[解決済み] Python の sorted() はどのようなアルゴリズムを使っているのですか?重複
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] googletransがエラー 'NoneType' オブジェクトに 'group' 属性がない、と言って動かなくなった。
-
[解決済み] dict を txt ファイルに書き、それを読み取る?
-
[解決済み] Pandasの'Freq'タグにはどのような値が有効ですか?
-
[解決済み] オブジェクトのリストに特定の属性値を持つオブジェクトが含まれているかどうかをチェックする
-
[解決済み] tensorflowのCPUのみのインストールでダイナミックライブラリ 'cudart64_101.dll' を読み込めなかった
-
[解決済み] Django で全てのリクエストヘッダを取得するにはどうすれば良いですか?
-
[解決済み] virtualenv の `--no-site-packages` オプションを元に戻す。
-
[解決済み] Pythonの文字列書式をリストで使う
-
[解決済み] djangoのQueryDictをPythonのDictに変更するには?
-
[解決済み] Alembicアップグレードスクリプトでインサートやアップデートを実行するにはどうすればよいですか?