Home » Python » IPython・Jupyterの使い方 » Jupyterなら複数回実行時の時間計測が簡単-%%timeitマジックコマンド

Jupyterなら複数回実行時の時間計測が簡単-%%timeitマジックコマンド

動作検証バージョン:Windows 11 Home + Python 3.10.11 + Jupyter Notebook 6.5.3

拙著『Excel VBAユーザーのためのPythonプログラミング入門』は、Python標準のIDLE(アイドル)を使って学習を進め、「おわりに」でIDLEに不満を感じ始めた方向けに、Jupyter Notebook(ジュパイターノートブック)をおすすめしています。

Jupyter Notebookをおすすめする理由はいくつかあり、コードを複数回実行した実行時間を簡単に測定できるのもその一つです。

[スポンサードリンク]

実行したいセルの先頭に「%%timeit」と書くだけで、コードを複数回実行して計測してくれるのです。

マジックコマンド%%timeitの使用例

セルの先頭に「%%timeit」と書き、同じセル内に何らかの処理を書いて実行すると、そのセル内の処理を複数回ループ処理するのを、何回か繰り返して、その平均実行時間と標準偏差を出力してくれます。

例えば、

%%timeit
for i in range(10):
    ret = i ** 2

を実行したところ、以下のように出力されました。

1.46 µs ± 29.6 ns per loop (mean ± std. dev. of 7 runs, 1,000,000 loops each)

1,000,000回繰り返すことを7回実行した結果、平均で1.46マイクロ秒(1.46e-6秒)、標準偏差が29.6ナノ秒(29.6e-9秒)であると出力されています。

マジックコマンド%%timeitのN loopsとR runs

処理を何回繰り返すのかも自動的に変更してくれます。
先ほどの

for i in range(10):

の行で指定しているrange関数の引数の値を「100」「1000」「10000」と変更しながら実行すると、以下のような出力が得られました。

14.6 µs ± 707 ns per loop (mean ± std. dev. of 7 runs, 100,000 loops each)
157 µs ± 7.3 µs per loop (mean ± std. dev. of 7 runs, 10,000 loops each)
1.48 ms ± 80.4 µs per loop (mean ± std. dev. of 7 runs, 1,000 loops each)

「N loops each」の部分が、自動的に変化しています。

%% timeit -n

何回ループさせるのかを指定することも可能です。

%% timeit -n 2000

と指定すれば、2,000 loops eachになります。

%% timeit -r

何回実行するかを指定することも可能です。

%% timeit -r 15

と指定すれば、15 runsになります。

もちろん両方を指定することも可能です。

%% timeit -r 10 -n 500

最終更新日時:2023-11-17 08:44

[スポンサードリンク]

Home » Python » IPython・Jupyterの使い方 » Jupyterなら複数回実行時の時間計測が簡単-%%timeitマジックコマンド

「IPython・Jupyterの使い方」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.