Python|カウントアップタイマーを作成する

1. はじめに

Pythonで「カウントアップタイマーを作成する」方法について解説します。カウントアップタイマーとは、一定間隔で時間を加算していくタイマーのことで、経過時間を表示するプログラムに活用できます。

本記事では、Python初心者〜中級者を対象に、シンプルなカウントアップ処理から、実用的な応用までを具体的なコードとともに紹介します。プログラミング学習中の方や、GUIアプリやIoT開発のための土台を作りたい方にも役立つ内容です。

 

2. Pythonでカウントアップタイマーを作成する基本

2-1. カウントアップタイマーとは?

カウントアップタイマーは、「開始時刻」からの経過時間をリアルタイムで表示し続ける仕組みです。timeモジュールを使えば、Pythonで簡単に実装できます。

2-2. 基本的なカウントアップ処理

import time

# 10秒間カウントアップ
for i in range(11):
    print(f"経過時間:{i} 秒")
    time.sleep(1)

実行結果:

経過時間:0 秒
経過時間:1 秒
経過時間:2 秒
...
経過時間:10 秒

2-3. 時間の計測に便利なtime.time()

import time

start = time.time()
time.sleep(3)  # 3秒待機
end = time.time()

print(f"正確な経過時間:{end - start:.2f} 秒")

実行結果:

正確な経過時間:3.00 秒

 

3. よくある使い方・応用例

3-1. リアルタイムで更新されるタイマー

import time
import sys

for i in range(11):
    sys.stdout.write(f"\r経過時間:{i} 秒")
    sys.stdout.flush()
    time.sleep(1)
print("\nタイマー終了")

実行結果:

(1秒ごとに「経過時間:○ 秒」が上書き表示され、最後に「タイマー終了」と表示)

3-2. 分・秒形式(MM:SS)で表示するタイマー

import time

for sec in range(121):  # 2分間
    minutes = sec // 60
    seconds = sec % 60
    print(f"\r経過時間:{minutes:02}:{seconds:02}", end="")
    time.sleep(1)

実行結果:

経過時間:00:00
経過時間:00:01
...
経過時間:02:00

3-3. キーボードで停止できるタイマー

import time

count = 0
try:
    while True:
        print(f"\r経過時間:{count} 秒", end="")
        time.sleep(1)
        count += 1
except KeyboardInterrupt:
    print("\nタイマーを手動で停止しました。")

実行結果:

(1秒ごとに表示され、Ctrl+Cで停止)
タイマーを手動で停止しました。

 

4. 注意点・エラー対策

4-1. time.sleep()の精度に注意

time.sleep()は便利ですが、厳密な精度は保証されていません。OSやCPUの影響を受けるため、リアルタイム性が求められる用途(ゲーム・IoT)ではtime.perf_counter()や外部タイマーライブラリの利用も検討しましょう。

4-2. Ctrl+C割り込みに対応する

無限ループの中でタイマーを使う際は、KeyboardInterrupt例外を捕捉しないと、停止時にエラーメッセージが表示されます。try〜exceptブロックを使うことで、ユーザーが意図的に停止してもきれいに終了できます。

4-3. 表示が重ならないようにする

print()で出力し続けると画面がスクロールして見にくくなることがあります。\rend=""を活用して同じ行に上書きする方法を取り入れましょう。

 

5. まとめ

この記事では、Pythonで「カウントアップタイマーを作成する」方法を解説しました。基礎的なループ処理から、リアルタイム表示、分秒変換、割り込み対応といった応用までを紹介しました。

学んだポイントのおさらい:

  • time.sleep()で一定間隔の処理が可能
  • sys.stdout.write()\rでリアルタイム更新を実現
  • try〜exceptで安全な停止処理ができる

カウントアップタイマーは、簡単なツールから複雑なアプリ開発まで幅広く応用できます。学習ツール、トレーニングアプリ、実験計測などにも役立ちます。自分なりの機能追加にもぜひ挑戦してみてください!

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