1. ホーム
  2. python

[解決済み] ある関数をx秒ごとに繰り返し実行するにはどうしたらよいですか?[クローズド]

2022-03-23 08:21:57

質問

Pythonで60秒ごとにある関数を永遠に繰り返し実行したい(ちょうど NSTimer Objective CのsetTimeoutやJSのsetTimeout)。このコードはデーモンとして実行され、事実上、cronを使用して1分ごとにpythonスクリプトを呼び出すようなものですが、ユーザーが設定する必要はありません。

Pythonで実装されたcronに関する質問です。 であり、その解決策は実質的に sleep() を x 秒間実行します。私はそのような高度な機能を必要としないので、おそらくこのようなものが機能するでしょう。

while True:
    # Code executed here
    time.sleep(60)

このコードで予見できる問題はありますか?

解決方法は?

イベントループがないプログラムでは、イベントループを作るために スケジュー モジュールは、汎用のイベントスケジューラを実装しています。

import sched, time
s = sched.scheduler(time.time, time.sleep)
def do_something(sc): 
    print("Doing stuff...")
    # do your stuff
    s.enter(60, 1, do_something, (sc,))

s.enter(60, 1, do_something, (s,))
s.run()

のようなイベントループライブラリをすでに使っている場合は、そのライブラリの機能を利用することができます。 asyncio , trio , tkinter , PyQt5 , gobject , kivy などなど。代わりに、既存のイベントループライブラリのメソッドを使ってタスクをスケジューリングしてください。