Pythonでline_profilerを用いてプログラムが消費した時間に関する詳細なレポートを出力してみます。
今回はLineProfilerモジュールを用います。このライブラリ・モジュールはPythonの標準ライブラリではありませんので、事前にインストールする必要があります。
■Python
今回は、Google Colaboratoryを用います。Google ColaboratoryのPythonのバージョンは、記事作成時点では「3.7.13」となっています。
■line_profilerを用いてプログラムが消費した時間に関する詳細なレポートを出力する
では、早速line_profilerを用いてプログラムが消費した時間に関する詳細なレポートを出力するスクリプトを書いていきます。
■コード
from line_profiler import LineProfiler def test_d(arg): print(arg) arg = "helloworld" profile = LineProfiler(test_d(arg)) profile.print_stats()
「from import」でline_profilerのLineProfilerを呼び出します。その後、def文を用いてtest_dという関数を定義します。定義した関数の引数,パラメータとしてargを設定します。設定後、関数を呼び出した時に実行される処理を記述します。今回はprint()で引数,パラメータとして受け取った値を出力させるという処理になります。
関数を定義後、定義した関数で設定した引数,パラメータに渡す値を、arg変数を定義し、その中に格納します。
格納後、profileという変数を定義し、その中でLineProfiler()を用います。括弧内には消費した時間を測定する関数を引数,パラメータとして渡します。これでプログラムが消費した時間が測定され、測定の結果が格納されます。
格納後、profile変数に対してドット(.)演算子を用いてprint_stats()を呼び出します。これでプログラムが消費した時間が出力されます。
■実行・検証
このセルを保存し、Google Colaboratory上で、セルを実行してみます。
実行してみると、「Timer unit(タイマーユニット): 1e-06 s」と出力され、プログラムが消費した時間が出力されました。
なお、今回は「/usr/local/lib/python3.7/dist-packages/ipykernel_launcher.py:8: UserWarning: Could not extract a code object for the object None」という警告が出力されましたが、警告でありエラーではないので、一旦無視しています。
コメント