Pythonのtime.sleep()をマスター:ベストプラクティス、マルチスレッド、実例
Python time.sleep()
time.sleep()は、現在のスレッドを指定された秒数だけ一時停止します。
Pythonのtimeモジュールには、時間を扱うためのさまざまなユーティリティが用意されています。その中で、time.sleep()は意図的な遅延の追加、スレッドの同期、操作のスロットリングに不可欠です。
例1:基本的な使用法
import time
print("即座に表示されます。")
time.sleep(2.4)
print("2.4秒後に表示されます。")
このシンプルなスクリプトは、time.sleep()が浮動小数点引数を受け取ることを示しています。Python 3.5以降では、関数は最小スリープ時間を保証します。それ以前のバージョンでは、わずかに長くスリープする可能性があります。
例2:デジタル時計
import time
while True:
local = time.localtime()
print(time.strftime("%I:%M:%S %p", local))
time.sleep(1)
このループは毎秒現在のローカル時刻を表示します。ターミナルを乱雑にしないよう、同じ行を更新する改良版を以下に示します:
import time
while True:
local = time.localtime()
print(time.strftime("%I:%M:%S %p", local), end="", flush=True)
print("\r", end="", flush=True)
time.sleep(1)
詳細については、Pythonのtime.sleep()ドキュメントを参照してください。
スレッドの理解
プロセスは実行中のプログラムであり、スレッドはそのプロセス内の軽量な単位です。複数のスレッドは同時に実行され、同じメモリ空間を共有できます。
例3:シンプルなマルチスレッド
import threading
def greet_hello():
for _ in range(3):
print("Hello")
def greet_hi():
for _ in range(3):
print("Hi")
t1 = threading.Thread(target=greet_hello)
t2 = threading.Thread(target=greet_hi)
t1.start()
t2.start()
t1とt2が並行して実行されるため、出力の順序は実行ごとに変わる可能性があります。
マルチスレッド環境でのtime.sleep()
シングルスレッドプログラムでは、time.sleep()はプロセス全体を停止します。マルチスレッド環境では、呼び出したスレッドのみが一時停止し、他のスレッドは継続して実行されます。
例4:スレッドごとに異なる一時停止
import threading, time
def say_hello():
for _ in range(4):
time.sleep(0.5)
print("Hello")
def say_hi():
for _ in range(4):
time.sleep(0.7)
print("Hi")
t1 = threading.Thread(target=say_hello)
t2 = threading.Thread(target=say_hi)
t1.start()
t2.start()
ここでは、一方のスレッドが0.5秒、もう一方が0.7秒スリープし、独立したペーシングを示しています。
スレッドの詳細については、Pythonのthreadingモジュールを参照してください。
Python
- Python データ型マスター: 実践ガイド
- Python 演算子完全マスター: 包括的ガイド
- Python pass文完全マスター: 実践ガイド
- Python 関数引数完全マスター: 位置引数・キーワード引数・デフォルト引数
- Python辞書完全ガイド:作成、操作、高度なテクニック
- Pythonイテレータ完全ガイド:仕組みと自作方法
- Pythonクロージャ解説:ネスト関数が変数を捕捉する仕組み
- Python datetimeマスター:日付・時刻・タイムゾーン実践ガイド
- Pythonで現在の日付と時刻を取得する実践ガイド
- Pythonで現在時刻とタイムゾーンデータを簡単に取得する
- Pythonのtimeモジュールをマスター:関数、構造体、実践例