Pythonで時間計測を簡単に行う方法とは?

python
記事内に広告が含まれています。

Pythonでは時間計測を行うための多くの手段が用意されています。

これにより、プログラムの実行時間を計測したり、複数のタスク間での時間差を測ることが可能です。

この記事では、Pythonで時間を計測するための基本的な方法から応用までを解説します。

DMM WEBCAMP
  • 未経験者向けプログラミングスクール
  • 現役エンジニアがしっかりサポート
  • 卒業後も安心の転職・副業サポート

Pythonでの時間計測の基本

Pythonには、timeモジュールやdatetimeモジュールを使って時間計測を行うことができます。

time.time()やtime.perf_counter()などの関数を使用することで、正確な時間を測定できます。

これらの関数を使ってプログラムの実行時間を測定し、最適化を行うことができます。

time.time()での時間計測

import time

start = time.time()
# 実行したいコード
end = time.time()
print(f"実行時間: {end - start}秒")

time.time()は1970年1月1日からの秒数を返し、プログラムの開始と終了時の時間を引くことで実行時間を計測します。

time.perf_counter()の使用

import time

start = time.perf_counter()
# 実行したいコード
end = time.perf_counter()
print(f"精密な実行時間: {end - start}秒")

time.perf_counter()は、より高精度な計測を行いたい場合に使用します。

time.sleep()を使った遅延

import time

print("開始")
time.sleep(2)  # 2秒間の遅延
print("終了")

time.sleep()は、指定した秒数だけプログラムを一時停止させるための関数です。

CodeCamp
  • 現役エンジニアからスキルを学べる
  • 満足度は驚異の97.4%
  • 300社以上のIT企業で研修に導入
  • 毎日9時〜21時まで、無料カウンセリングを開催中!

datetimeモジュールを使った時間操作

Pythonのdatetimeモジュールは、日時や時間の計算を行うために使用されます。

このモジュールを使用することで、プログラムの実行時間の測定だけでなく、日時操作も簡単に行えます。

現在の日時を取得する

from datetime import datetime

now = datetime.now()
print(f"現在の日時: {now}")

datetime.now()は現在の日時を取得し、さまざまな形式で出力できます。

日時の差分を計算する

from datetime import datetime

start = datetime(2023, 9, 1, 12, 0, 0)
end = datetime(2023, 9, 1, 14, 30, 0)
diff = end - start
print(f"時間の差: {diff}")

日時の差分を計算することで、指定した期間の長さを簡単に取得できます。

日時のフォーマットを指定する

from datetime import datetime

now = datetime.now()
formatted_date = now.strftime("%Y-%m-%d %H:%M:%S")
print(f"フォーマットされた日時: {formatted_date}")

strftimeメソッドを使用すると、指定したフォーマットで日時を表示することができます。

【リモートワークには必須】
キャリアに合わせてお得に光回線を利用しよう
ドコモ光
開通後、最短一ヶ月で35,000円のキャッシュバック!
 
auひかり
難しい条件一切なしで、最大12,7000円のキャッシュバック!
 
ソフトバンク光
高額キャッシュバックや豪華特典をお届け!

Pythonでのプログラムの実行時間の測定

プログラムの実行時間を測定することは、パフォーマンスの最適化やバグの検出において重要です。

Pythonでは、timeitモジュールを使うことで正確な実行時間を簡単に計測できます。

timeitモジュールの基本的な使い方

import timeit

# サンプルコードの実行時間を計測
execution_time = timeit.timeit("sum(range(1000))", number=1000)
print(f"実行時間: {execution_time}")

timeit.timeit()を使って、指定されたコードの実行時間を計測できます。

関数の実行時間を測定

import timeit

def sample_function():
    return sum(range(1000))

# 関数の実行時間を測定
execution_time = timeit.timeit(sample_function, number=1000)
print(f"関数の実行時間: {execution_time}")

関数の実行時間を測定するには、関数名をtimeitに渡します。

timeit.repeat()を使った複数回の測定

import timeit

# 実行時間を3回測定
execution_times = timeit.repeat("sum(range(1000))", repeat=3, number=1000)
print(f"複数回の実行時間: {execution_times}")

timeit.repeat()を使うことで、複数回の実行時間を比較することができます。

プログラミングスクール受講時には教育訓練給付制度を利用することで、受講料の最大80%の給付を受けることが可能です。

マルチスレッドや非同期処理での時間計測

Pythonでは、マルチスレッド非同期処理においても正確な時間計測が必要です。

そのためには、スレッドセーフな計測方法や非同期に対応した時間計測が求められます。

スレッドセーフな時間計測

import time
import threading

def task():
    start = time.time()
    time.sleep(1)
    print(f"スレッド {threading.current_thread().name} の実行時間: {time.time() - start}")

threads = [threading.Thread(target=task) for _ in range(5)]
for thread in threads:
    thread.start()

マルチスレッド環境での時間計測は、各スレッドごとに個別の計測を行います。

非同期処理での時間計測

import time
import asyncio

async def task():
    start = time.time()
    await asyncio.sleep(1)
    print(f"非同期タスクの実行時間: {time.time() - start}")

asyncio.run(task())

非同期処理ではasyncioを使い、awaitで指定した処理の終了時間を計測します。

複数のタスクの時間を同時に計測

import time
import asyncio

async def task():
    start = time.time()
    await asyncio.sleep(1)
    return time.time() - start

async def main():
    tasks = [task() for _ in range(5)]
    times = await asyncio.gather(*tasks)
    print(f"タスクごとの実行時間: {times}")

asyncio.run(main())

複数の非同期タスクを同時に実行し、それぞれの実行時間を取得します。

techgym
  • 20000人が学んだpythonの教材
  • 正しい情報をまとめて入手
  • 様々なゲームを作成しながら楽しくpythonが身に付く
  • 自主学習派はこれ一択!

今なら1年間有効なzoomサポート付き!

まとめ:Pythonでの時間計測をマスターする

Pythonでの時間計測は、プログラムの最適化に不可欠です。

この記事で紹介した手法を活用し、精度の高い時間計測を行いましょう。

ぜひ、これらの手法を試して、効率的な開発に役立ててください。

【給付金が受けられる】おすすめプログラミングスクール!
  • DMM WEBCAMP
    転職成功率98%&離職率2.3%
    転職できなければ全額返金DMM.comグループならで非公開求人も多数
  • テックアカデミー
    【転職保証】受講生の100%が内定獲得!9割以上が未経験からスタート!LINEヤフー監修&万全サポート
  • Aidemy Premium
    【給付金利用の相談歓迎】AI・データ分析学ぶならAidemy Premium
  • ウズウズカレッジ
    初心者・文系出身者でもOK、IT未経験からの専門的な就業サポート

コメント

タイトルとURLをコピーしました