Python
 Computer >> コンピューター >  >> プログラミング >> Python

小さなPythonコードスニペットの実行時間を測定する(timeit)


Pythonの標準ライブラリのtimeitモジュールのTimerクラスおよびその他の便利な関数は、Pythonコードの小さなビットが実行するのにかかる時間を測定するメカニズムを提供するように設計されています。モジュールにはコマンドラインインターフェイスがあり、関数はプログラム内からも呼び出すことができます。

実行時間を測定する最も簡単な方法は、次の便利な機能を使用することです

timeit()

この関数は、Timerクラスのオブジェクトを返します。主に2つのパラメータが必要です。

  • stmt −実行時間が測定される有効なPythonステートメントを含む文字列。

  • セットアップ −主に特定のオブジェクトまたは変数を初期化するために1回実行されるPythonステートメントを含む文字列。

両方の文字列には、セミコロン(;)または改行で区切られた複数のステートメントが含まれる場合があり、どちらもデフォルトでキーワードを渡します。 'stmt'

の実行回数を示す別のオプションのパラメータ番号を指定できます。

次の例では、0〜100の範囲の数値の累積加算を1000回実行するのに必要な時間が測定されます。

import timeit
setupcode = "s = 0"
function = '''
for x in range(100):
s = s + x
'''
print (timeit.timeit(setup = setupcode, stmt = function, number = 1000))

ここで、文字列には、0〜100の範囲の数値が追加されるforループが含まれています。この文字列はstmtパラメータです。さらに、変数の初期化はセットアップコード文字列によって行われます。 timeit()関数は、必要な時間を秒単位で計算します。

出力

0.03055878530880241

タイマークラス

最初にTimerオブジェクトを作成し、次にそのオブジェクトに対してtimeit()メソッドを実行しても、同じ結果を得ることができます。

repeat()

Timerクラスには、timeit()を繰り返し呼び出すrepeat()メソッドもあります。すべての呼び出しのリストを返します。

上記のコードのオブジェクト指向バージョンは次のとおりです-

import timeit
setupcode = "s = 0"
function = '''
for x in range(100):
s = s + x
'''
t = timeit.Timer(setup = setupcode, stmt = function)
print (t.timeit(number = 1000))
print ('calling repeat() :',t.repeat(3,1000))

出力

0.019971274194651528
calling repeat() : [0.023369810546474253, 0.020518432391765262, 0.02075439436427058]

コマンドラインインターフェイス

前述のように、timeitモジュールにはコマンドラインインターフェイスがあります。モジュール自体は、Pythonスクリプトを実行するためのコマンドラインで–mオプションを使用してインポートされます。次のコマンドラインオプションは、さまざまなパラメータラインの設定と実行可能コード、繰り返し頻度などを定義します。

-n N、-number =N 「ステートメント」を実行する回数
-r N、-repeat =N タイマーを繰り返す回数(デフォルトは3)
-s S、-setup =S 最初に1回実行されるステートメント(デフォルトパス)
-v、-verbose 生のタイミング結果を出力します。数字の精度を上げるために繰り返します
-h、-help 短い使用法メッセージを印刷して終了します

以下は、前に使用したサンプルコードに相当するコマンドラインです-

C:\Users\acer>python -m timeit -s "s = 0" "for x in range(100): s = s + x"
10000 loops, best of 3: 22.4 usec per loop
>
  1. Pythonインタープリター:ステップバイステップガイド

    Pythonインタープリターは、マシンに正しいバージョンのPythonがインストールされていることを確認しなくてもオンラインで存在するため、Pythonは非常にアクセスしやすく学習できます。この記事では、Pythonインタープリターとは何かについて説明し、オンラインで使用できる、より人気のある、初心者向けのインタープリターをいくつかリストします。 Pythonプログラムはどのように実行されますか? Pythonは、Javaと同様に、インタプリタ言語またはコンパイル言語として完全に分類することはできません。両方のほんの少しです。 この場合にコンパイルされるということは、どの

  2. Pythonでのベクトル化

    この記事では、Python3.xを使用した実装に関連するベクトル化とさまざまな手法について学習します。またはそれ以前。 ベクトル化とは何ですか? ベクトル化は、ループを使用せずに配列を実装する手法です。代わりに関数を使用すると、コードの実行時間と実行時間を効率的に最小化するのに役立ちます。さまざまな演算が、ベクトルの内積などの配列ではなく、ベクトルに対して実行されています。これは、単一の出力を生成するため、スカラー積とも呼ばれます。外部積は、ベクトルの(長さXの長さ)に等しい次元の二乗行列になります。要素同じインデックスの要素と行列の次元を積む賢明な乗算は変更されません。 内積/内積