「threading.Timer」を使用した繰り返し関数の実装
「n」秒ごとに繰り返し実行される関数の作成は、プログラミング。ただし、この目的で 'threading.Timer' を使用すると課題が生じる可能性があります。
1 つの方法では、以下の疑似コードに示すように、タイマー スレッドを複数回開始する必要があります。
t=threading.timer(0.5,function) while True: t.cancel() t.start()
ただし、 「threading.Timer」オブジェクトは 1 回しか開始できないため、「RuntimeError: スレッドは 1 回しか開始できません」エラーが発生する可能性があります。これに対処するために、タイマーの繰り返しの実行とキャンセルを処理するカスタム スレッド クラスを作成できます:
class MyThread(Thread): def __init__(self, event): Thread.__init__(self) self.stopped = event def run(self): while not self.stopped.wait(0.5): print("my thread") # call a function
メイン コードで、タイマー スレッドを制御するイベントを作成できます:
stopFlag = Event() thread = MyThread(stopFlag) thread.start() # this will stop the timer stopFlag.set()
このアプローチを使用すると、「RuntimeError」問題が発生することなく、必要に応じて繰り返し関数を開始および停止できます。
以上が「RuntimeError: スレッドは 1 回しか開始できません」問題を発生させずに、「threading.Timer」を使用して繰り返し関数を実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。