Python での関数の連続実行の実装
指定された間隔での継続的な実行が必要なタスクのために、Python にはさまざまなオプションが用意されています。簡単なアプローチの 1 つは、time モジュールの sleep() 関数と組み合わせて単純なループを利用することです。
while True: # Code executed here time.sleep(60)
このコードは望ましい結果を達成しているように見えますが、考慮すべき潜在的な欠点があります。具体的には、実行されたコードがメイン スレッドをブロックすると、スケジュールされた関数が時間どおりに実行されなくなる可能性があります。
代替ソリューション
より堅牢で柔軟なスケジューリングについては、次のことを検討してください。 sched モジュール。汎用イベント スケジューラを提供します。 sched を利用すると、スケジュールされたイベントを定義および制御し、タイムリーな実行を保証できます。
import sched, time def do_something(scheduler): # schedule the next call first scheduler.enter(60, 1, do_something, (scheduler,)) print("Doing stuff...") # then do your stuff my_scheduler = sched.scheduler(time.time, time.sleep) my_scheduler.enter(60, 1, do_something, (my_scheduler,)) my_scheduler.run()
または、プログラムでイベント ループ ライブラリ (asyncio、trio、tkinter、PyQt5 など) を使用する場合。 、そのメソッドを活用して、既存のイベント ループ内でタスクをスケジュールします。このアプローチにより、アプリケーションの最適な調整と応答性が確保されます。
以上がスレッドのブロックを回避しながら、Python で関数の継続実行を実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。