\

Pythonでの待機処理は、一般的にはtime.sleep()関数を使用しますが、この関数はプログラム全体をブロックしてしまうため、他の処理を同時に行いたい場合には適していません。

そこで、time.sleep()を使わずに待機する方法を紹介します。具体的には、マルチスレッドや非同期処理を利用することで、待機中も他の処理を行うことが可能です。

マルチスレッドを利用する方法

Pythonのthreadingモジュールを利用すると、複数のスレッドを同時に実行することができます。以下に、threading.Timerを使用した例を示します。

import threading

def callback():
    print("60秒経過しました")

timer = threading.Timer(60.0, callback)
timer.start()

# ここで他の処理を行うことができます

このコードでは、60秒後にcallback関数が呼び出されます。その間、メインスレッドでは他の処理を行うことができます。

非同期処理を利用する方法

非同期処理を利用すると、一部の処理をバックグラウンドで実行しながら、メインの処理を続けることができます。以下に、非同期処理を利用した例を示します。

import time

counter = 31
start = time.time()

while True:
    # ここで他の処理を行うことができます
    time.sleep(0.1)
    print("looping...")

    # 1秒以上経過した場合
    if time.time() - start > 1:
        start = time.time()
        counter = counter - 1
        print(f"{counter} seconds remaining")

    # カウントダウンが終了した場合、ループを終了する
    if counter <= 0:
        break

このコードでは、1秒ごとにカウントダウンを行いながら、他の処理(ここではprint("looping..."))を続けています。

以上、Pythonでtime.sleep()を使わずに待機する方法を紹介しました。これらの方法を利用することで、待機中も他の処理を行うことが可能となり、より効率的なプログラムを作成することができます。

投稿者 admin

コメントを残す

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