Python で関数を定期的に実行する
指定された間隔で関数を繰り返し実行することは、プログラミングにおける一般的なタスクです。 Python ではこれを実現するためのさまざまなアプローチが提供されており、その 1 つが time モジュールです。ただし、質問で言及されている単純な while ループ アプローチは、予期しない課題に直面する可能性があります。
while ループ アプローチの潜在的な問題:
while ループ コードは、効果的に一時停止します。各反復で 60 秒間のプログラムを実行します。実行中の関数を即時実行する必要がある場合、これにより問題が発生する可能性があります。たとえば、関数がリアルタイム データを処理する場合、60 秒の遅延により大量のデータ バックログが発生する可能性があります。
代替アプローチ: sched モジュールを使用する
while ループの代わりに、sched モジュールはより堅牢なイベント スケジューリング メカニズムを提供します。これを使用する方法は次のとおりです。
import sched, time # Define the callback function def do_something(scheduler): # Schedule the next call scheduler.enter(60, 1, do_something, (scheduler,)) print("Doing stuff...") # Execute the actual task # Create a scheduler scheduler = sched.scheduler(time.time, time.sleep) # Schedule the first call scheduler.enter(60, 1, do_something, (scheduler,)) # Run the event loop scheduler.run()
このアプローチでは、do_something 関数は 60 秒ごとに実行されるようにスケジュールされています。 scheduler.enter() メソッドは、遅延 60 秒、優先度 1 で関数をスケジュールし、他のイベントをブロックすることなく関数ができるだけ早く実行されるようにします。
既存のイベント ループの使用ライブラリ
アプリケーションが asyncio や tkinter などのイベント ループ ライブラリをすでに採用している場合は、そのライブラリを活用できます。 sched モジュールを使用する代わりに、組み込みのスケジューリング機能を使用します。これにより、既存のイベント ループ メカニズムとの互換性が確保され、潜在的な競合が回避されます。
以上がPython 関数を定期的に確実に実行するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。