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

例を使ってPythonでTimeit?


Pythonには、Pythonコードの実行時間を測定する多くの方法があります。 1つの方法は、Python組み込みの時間モジュールを使用して、プログラムの実行の前後の時間を節約することです。

Python timeit

一部のプログラムが実行されている場合、そのコードを実行可能にするために、多くのプロセスもバックグラウンドで実行されます。時間モジュールはバックグラウンドプロセスの実行時間をカウントしませんが、正確な時間パフォーマンス測定が必要な場合は、時間モジュールがそれを実行します。

timeitモジュールはコードを約100万回(デフォルト値)実行し、そのコードの実行にかかった最小時間を考慮に入れます。

timeitを使用してPython実行時間を取得する

timeitモジュールはさまざまな方法で使用できます。最も簡単な方法の1つは、PythonCLIで直接使用することです。

まず、timeitモジュールでPythonCLIの使用を開始します。 CLIを使用すると、モジュール自体が同じコードに対して実行される繰り返しの数を決定することに気付くでしょう。

例1

C:\Users\rajesh>python -m timeit "'-'.join(str(n) for n in range(200))"
1000 loops, best of 3: 290 usec per loop

C:\Users\rajesh>python -m timeit "'-'.join(str(n) for n in range(200))"
1000 loops, best of 3: 292 usec per loop

C:\Users\rajesh>python -m timeit "'-'.join(str(n) for n in range(200))"
1000 loops, best of 3: 294 usec per loop

例2

次に、別の簡単な例でtimeitを紹介しますが、最初に「importtimeit」ステートメントを使用してtimeitモジュールをインポートする必要があります。これは、上記のようなコマンドライン構文を使用していない場合に必要です。

#Import timeit module
import timeit

# The instructions being timed.
print('x' * 5)
print('x' + 'x' + 'x' + 'x' + 'x')

# Call timeit on the statements and print the time returned.
# ... Specify optional number of iterations.
print(timeit.timeit("y = 'x' * 3", number=10000000))
print(timeit.timeit("xy = 'x' + 'x' + 'x' + 'x' + 'x'", number = 10000000))

上記では、引用符で囲まれた文字列のステートメントをtimeit.timeitメソッドに渡し、数値引数を指定して反復を増やします。

出力

上記のプログラムを初めて実行すると、出力が生成されます:

xxxxx
xxxxx
0.9041136896626635
0.7712796073957123

上記のプログラムを2回実行すると、出力が生成されます:

xxxxx
xxxxx
0.7317015874427751
0.7312688195585995

上記のプログラムを3回実行すると、出力が生成されます:

xxxxx
xxxxx
0.7240862411172824
0.7255863890794246

上記のプログラムを複数回(3回)実行しましたが、実行時間が短縮されていることがわかります。 1つは手動で行うのではなく、プログラムを介して繰り返します。

#Import timeit module
import timeit
# Call timeit on the statements and print the time returned.
# ... Specify optional number of iterations.
print(timeit.repeat("y = 'x' * 3", number=10000000, repeat = 5))
print()
print(timeit.repeat("xy= 'x' + 'x' + 'x' + 'x' + 'x'", number = 10000000, repeat = 5))
>

出力

[0.7303736343436382, 0.7213687552991258, 0.7362311105941466, 0.7293136666273243, 0.7278277732068212]

[0.7388334197158559, 0.7378481457977326, 0.9486733868277772, 0.735295442480929, 0.7398226849056382]

timeitモジュールを使用した複数のステートメントの実行:

timeitモジュールで複数のステートメントを使用できます。各ステートメントはセミコロンを使用して区切ります。コードを書くのに最適な方法ではありませんが、より長いコードフラグメントを指定するのに役立ちます。

#Import timeit module
import timeit

# Use semicolon for multiple statements.
print(timeit.repeat("x = 2; x *= 2", number=100000000))
print(timeit.repeat("x = 1; x *= 4", number=100000000))

出力

[24.859605879029118, 23.58795536845994, 23.95826726353284]
[22.70639977603264, 21.380195994245724, 20.71523588130414]

メソッドを使用して、Timeitモジュールでセットアップします:

セットアップ引数を指定することで、timeitでカスタムメソッドを使用できます。この引数では、呼び出すメソッドを示すimportステートメントを指定します。

#Import timeit module
import timeit

def func1():
   return 1

def func2():
   return sum([-1, 0, 1, 1])

# Test methods.
print(func1())
print(func2())

# Pass setup argument to call methods.
print(timeit.repeat("func1()", setup="from __main__ import func1"))
print(timeit.repeat("func2()", setup="from __main__ import func2"))

上記のプログラムでは、func1()メソッドをfunc2()メソッドに対してベンチマークします。

出力

1
1
[0.44798489246658874, 0.4411512652046069, 0.44570416580426686]
[1.583622557983199, 1.5712399227517881, 1.5469479030713984]

func1()の作業が少ないため、実行速度が大幅に向上します。

概要

上記では、CLIとスクリプトを使用したtimeitモジュールを使用してPythonコードの小さな部分のパフォーマンスを測定する方法を示しました。


  1. Pythonを使用して3DプロットをPDF3Dに保存する

    Pythonで3DプロットをPDFに保存するには、次の手順を実行できます ステップ 図のサイズを設定し、サブプロット間およびサブプロットの周囲のパディングを調整します。 新しいフィギュアを作成するか、既存のフィギュアをアクティブにします。 「ax」を追加します サブプロットの配置の一部として図に。 u、v、x、yを作成します およびz numpyを使用したデータポイント。 3Dワイヤーフレームをプロットします。 プロットのタイトルを設定します。 savefig()を使用して現在の数値を保存します メソッド。 例 import matplotli

  2. Python-PyGameで画像を表示する

    Pygameは、ゲームやマルチメディアアプリケーションを作成するためのPython用のマルチメディアライブラリです。この記事では、pygameモジュールを使用して、pygameウィンドウでの高さ、幅、位置を考慮して、画面に画像をペイントする方法を説明します。 以下のプログラムでは、pygameモジュールを初期化してから、画像のモードとキャプションを定義します。次に、画像をロードして座標を定義します。 screen.blit関数は、whileループがゲームの終了をリッスンし続けている間、画面をペイントします。 例 import pygame pygame.init() w = 300; h =