Python 3のプログラムの実行時間を取得するにはどうすればよいですか?

PYTHON3 チュートリアル

プログラムの実行時間を計測する方法

Pythonでプログラムの実行時間を計測することは、パフォーマンスの最適化やデバッグの際に非常に重要です。特に、データ処理やアルゴリズムの効率を評価する際に、実行時間は重要な指標となります。このブログ投稿では、Python 3でプログラムの実行時間を計測する方法を詳細に解説します。

問題の背景

Pythonでは、簡単なスクリプトから複雑なデータ処理アプリケーションまで、さまざまな用途で使用されます。プログラムの実行時間を正確に計測することで、コードのどの部分がボトルネックになっているのかを特定し、最適化の方向性を定めることができます。

解決策の概要

Pythonには、実行時間を計測するための複数の方法が存在します。主な方法としては、time モジュールの使用、timeit モジュールの使用、そして外部ライブラリを用いた方法があります。これらの方法を具体的なコード例と共に解説していきます。

time モジュールを使用する方法

time モジュールは、プログラムの特定の部分の開始時刻と終了時刻を記録することで、実行時間を計測するのに使用できます。

import time

start_time = time.time()

# 実行したいコード
sum(range(1000000))

end_time = time.time()
print(f"実行時間: {end_time - start_time} 秒")

timeit モジュールを使用する方法

timeit モジュールは、小さなコードスニペットの実行時間を多数回計測し、より正確な平均実行時間を提供します。特にループや小さな関数のパフォーマンス測定に適しています。

import timeit

code_to_test = """
sum(range(1000000))
"""

execution_time = timeit.timeit(code_to_test, number=100)/100
print(f"平均実行時間: {execution_time} 秒")

外部ライブラリを使用する方法(例:py-spy)

py-spy は、Pythonプログラムのプロファイリングを行うための強力なツールです。これを使用すると、プログラム全体の実行時間だけでなく、各関数の実行時間も詳細に調べることができます。

# コマンドラインから py-spy を使用する例
# インストールが必要です: pip install py-spy
# 使用例: py-spy top -- python your_script.py

最適なアプローチの選択

これらの方法の中で最も適切な方法を選ぶには、計測したいコードの性質を考慮する必要があります。単純な実行時間の計測であれば time モジュールが簡単です。より詳細な分析が必要な場合は timeitpy-spy などのツールを検討すると良いでしょう。

この情報がPythonプログラムのパフォーマンス測定と最適化に役立つことを願っています。実行時間の計測は、効率的なコードを書くための第一歩です。

購読
通知
3 Comments
Inline Feedbacks
View all comments

py-spyを使ってプログラム全体の実行時間だけでなく、各関数の実行時間を調べることができますが、その使用方法の例を教えてください。

py-spyを使用してプログラム全体の実行時間や各関数の実行時間を調べるには、以下の手順で行うことができます。

1. py-spy のインストール

まず、py-spyをインストールします。pipを使用して簡単にインストールできます。

pip install py-spy

2. py-spy を使用してプログラムのプロファイリングを実行

インストールが完了したら、コマンドラインからpy-spyを使ってプロファイリングを行います。

例: プログラムのプロファイリング

例えば、以下のようなPythonスクリプトがあるとします。

# sample_script.py
import time


def slow_function():
    time.sleep(2)


def fast_function():
    time.sleep(0.5)


def main():
    slow_function()
    fast_function()


if __name__ == "__main__":
    main()

このプログラムでは、slow_functionfast_functionという2つの関数が実行されます。それぞれの関数の実行時間をpy-spyでプロファイリングするには、次のようにコマンドを実行します。

2.1 プロファイルデータをリアルタイムで表示

py-spy top -- python sample_script.py

このコマンドを実行すると、sample_script.pyが実行され、そのプロファイルデータがprofile.svgというファイルに保存されます。profile.svgをブラウザで開くと、各関数の実行時間が視覚的に表示されます。この形式は、フレームグラフとして知られており、各関数の実行時間やその関数が呼び出された回数などが詳細に表示されます。
3. 結果の確認
保存されたSVGファイルをブラウザで開くことで、どの関数が最も時間を消費しているか、またどの関数が他の関数を呼び出しているかなど、プログラムのパフォーマンスに関する詳細な情報を視覚的に分析できます。
これにより、コードのどの部分がボトルネックになっているのかを特定し、最適化の方向性を決めることができます。

ありがとうございました。