Pythonでは、while Trueを使用して無限ループを作成することができます。このループは、breakステートメントが呼び出されるか、プログラムが終了するまで続きます。

しかし、このループ内で一定の待機時間を設けることがよくあります。例えば、サーバーからのレスポンスを待つ、特定の時間間隔でタスクを実行するなどの場合です。Pythonでは、time.sleep()関数を使用してプログラムの実行を一時停止することができます。

以下に、一定の間隔でタスクを実行するための基本的なコードを示します。

import time

def worker():
    print(time.time())
    time.sleep(8)

interval = 5
while True:
    worker()
    time.sleep(interval)

しかし、このコードでは問題があります。worker()関数の実行時間がintervalに含まれてしまうため、実際の待機時間はinterval+worker()の実行時間となってしまいます。

これを解決するためには、次のようにスレッドを使用します。

import time
import threading

def worker():
    print(time.time())
    time.sleep(8)

def schedule(interval, f, wait=True):
    base_time = time.time()
    next_time = 0
    while True:
        t = threading.Thread(target=f)
        t.start()
        if wait:
            t.join()
        next_time = ((base_time - time.time()) % interval) or interval
        time.sleep(next_time)

このコードでは、worker()関数が新しいスレッドで実行され、その実行時間が主要なループから分離されます。これにより、指定した間隔で正確にタスクを実行することができます。

以上が、Pythonのwhile Trueループと待機処理の基本的な使い方です。この知識を活用して、Pythonプログラムのパフォーマンスを向上させることができます。

投稿者 admin

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です