ホームページ  >  記事  >  バックエンド開発  >  Python で `threading.Timer` オブジェクトを再起動するときに RuntimeError を処理する方法は?

Python で `threading.Timer` オブジェクトを再起動するときに RuntimeError を処理する方法は?

Patricia Arquette
Patricia Arquetteオリジナル
2024-11-09 18:27:02742ブラウズ

How to Handle the RuntimeError When Re-starting a `threading.Timer` Object in Python?

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

Python の threading.Timer モジュールは、指定した時間に実行する関数をスケジュールする便利な方法を提供します間隔。ただし、ユーザーがこれらのタイマーの実行を制御しようとすると、問題が発生する可能性があります。

よくある問題の 1 つは、タイマーを再起動するときに発生する RuntimeError です。その理由は、threading.Timer オブジェクトは 1 回しか開始できないためです。これに対処するには、同じタイマーを複数回再起動するのではなく、タイマーを管理する別のスレッドを作成することをお勧めします。

このアプローチを実装する方法の例を次に示します。

import threading
import time

def my_function():
    print("Function called")

# Create an event to signal when the thread should stop
stop_event = threading.Event()

# Define a thread class that runs the timer
class TimerThread(threading.Thread):
    def run(self):
        while not stop_event.is_set():
            # Execute the function at specified intervals
            time.sleep(0.5)
            my_function()

# Create and start the timer thread
timer_thread = TimerThread()
timer_thread.start()

# Pause the timer by setting the stop_event
time.sleep(5)
stop_event.set()

# Wait for the thread to finish
timer_thread.join()

この例では、TimerThread は一度開始されると無期限に実行され、タイマー ロジックは run() メソッド内にカプセル化されます。タイマーを制御するには、stop_event を設定してスレッドに実行を停止する信号を送信します。このアプローチにより、タイマーの制御が向上し、タイマー オブジェクトの再起動に関連する RuntimeError が回避されます。

以上がPython で `threading.Timer` オブジェクトを再起動するときに RuntimeError を処理する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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