ホームページ  >  記事  >  バックエンド開発  >  Python で threading.Timer を使用するときに RuntimeError を回避する方法は?

Python で threading.Timer を使用するときに RuntimeError を回避する方法は?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-11-16 05:57:03111ブラウズ

How to Avoid RuntimeError When Using threading.Timer in Python?

Threading.Timer: 指定した間隔で関数を繰り返す

Python スレッドを使用する場合、特にタイマーを繰り返し開始および停止しようとする場合、彼らの行動を理解することが重要です。 threading.Timer の使用中に発生する一般的な課題の 1 つは、RuntimeError を受信することです。

The Runtime Error:

すでに開始されているタイマーを開始しようとすると、RuntimeError が発生します。 。これは、一度開始されたスレッドは直接再起動できないためです。

回避策:

この問題に対処するには、専用のスレッドを使用してタイマー関数を処理することを検討してください。アプローチ方法は次のとおりです:

タイマー スレッドの作成:

Thread を継承し、タイマー ロジックを組み込んだカスタム スレッド クラス (MyThread) を使用します。

import threading

class MyThread(threading.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 your function here

の開始と停止タイマー:

タイマーを開始するコードで stopFlag イベントを作成し、それを使用してタイマーを停止するタイミングを通知します。

stopFlag = threading.Event()
thread = MyThread(stopFlag)
thread.start()  # Start the timer thread once
# To stop the timer, set the stopFlag event
stopFlag.set()

このアプローチの利点:

  • タイマー スレッドは 1 回だけ開始され、 RuntimeError.
  • タイマー関数は別のスレッドで実行され、メイン スレッドのブロックを防ぎます。
  • 負荷の高い処理中であっても、正確で一貫した時間間隔が維持されます。

以上がPython で threading.Timer を使用するときに RuntimeError を回避する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。