スクリプトを実行する際、APIへのリクエスト間隔を調整したり、定期的な処理の間に待機時間を設けたりする必要が生じることがあります。
Pythonでは、標準ライブラリの time モジュールに含まれる sleep() 関数を使用することで、プログラムの実行を指定した時間だけ停止させることができます。
この記事では、time.sleep() の基本的な使い方と、整数および小数による時間指定の方法について解説します。
time.sleep() の基本構文
time.sleep() を使用するには、まず import time を記述してモジュールを読み込む必要があります。引数には待機させたい時間を「秒」単位で指定します。
構文:
import time
time.sleep(秒数)
この関数が実行されると、プログラムはその行で指定された時間だけ停止し、時間が経過すると次の行の処理へ進みます。
具体的な使用例
1. 整数(int)で秒数を指定する
サーバーへの再接続や、完了待ちなどで数秒間待機する場合の例です。ここでは3秒間の待機を行います。
import time
print("サーバーへの接続を試みます...")
# 3秒間待機する
time.sleep(3)
print("接続に成功しました。処理を再開します。")
実行結果:
サーバーへの接続を試みます...
(ここで3秒間停止)
接続に成功しました。処理を再開します。
2. 小数(float)で秒数を指定する
time.sleep() の引数には、整数だけでなく浮動小数点数(float)も指定できます。これにより、0.1秒や0.5秒といった1秒未満の細かい待機が可能になります。
以下の例では、リストの要素を0.5秒間隔で順次表示し、読み込み中のような動作を表現します。
import time
loading_steps = ["初期化中", "設定読み込み", "データベース接続", "完了"]
print("--- アプリケーション起動 ---")
for step in loading_steps:
print(f"ステータス: {step}")
# 0.5秒間待機する
time.sleep(0.5)
print("--- 起動完了 ---")
実行結果:
--- アプリケーション起動 ---
ステータス: 初期化中
(0.5秒待機)
ステータス: 設定読み込み
(0.5秒待機)
ステータス: データベース接続
(0.5秒待機)
ステータス: 完了
--- 起動完了 ---
注意点:待機時間の精度について
time.sleep() で指定する時間は、あくまで「最小の待機時間」です。
オペレーティングシステム(OS)のタスクスケジューリングや、その時のシステム負荷の影響を受けるため、指定した時間よりもわずかに長く停止する場合があります。厳密なリアルタイム性が求められる処理(ミリ秒単位の正確な制御など)には向いていない点に留意してください。
まとめ
- Pythonで処理を一時停止するには、
timeモジュールをインポートし、time.sleep(秒数)を使用します。 - 引数には整数だけでなく、小数(
0.5など)も指定可能です。 - APIのレート制限対策や、ループ処理の負荷軽減、ユーザーインターフェースの演出などに活用されます。
