sched —イベントスケジューラ—Pythonドキュメント

提供:Dev Guides
< PythonPython/docs/3.8/library/sched
移動先:案内検索

sched —イベントスケジューラ

ソースコード: :source: `Lib / sched.py`



sched モジュールは、汎用イベントスケジューラを実装するクラスを定義します。

class sched.scheduler(timefunc=time.monotonic, delayfunc=time.sleep)

scheduler クラスは、イベントをスケジューリングするための汎用インターフェイスを定義します。 「外の世界」を実際に処理するには、2つの関数が必要です。 timefunc は引数なしで呼び出し可能であり、数値(任意の単位での「時間」)を返す必要があります。 delayfunc 関数は、 timefunc の出力と互換性があり、1つの引数で呼び出すことができ、その数の時間単位を遅延させる必要があります。 delayfunc は、各イベントの実行後に引数0を指定して呼び出され、他のスレッドがマルチスレッドアプリケーションで実行できるようにします。

バージョン3.3で変更: timefunc および delayfunc パラメーターはオプションです。

バージョン3.3で変更: スケジューラークラスはマルチスレッド環境で安全に使用できます。

例:

>>> import sched, time
>>> s = sched.scheduler(time.time, time.sleep)
>>> def print_time(a='default'):
...     print("From print_time", time.time(), a)
...
>>> def print_some_times():
...     print(time.time())
...     s.enter(10, 1, print_time)
...     s.enter(5, 2, print_time, argument=('positional',))
...     s.enter(5, 1, print_time, kwargs={'a': 'keyword'})
...     s.run()
...     print(time.time())
...
>>> print_some_times()
930343690.257
From print_time 930343695.274 positional
From print_time 930343695.275 keyword
From print_time 930343700.273 default
930343700.276

スケジューラオブジェクト

scheduler インスタンスには、次のメソッドと属性があります。

scheduler.enterabs(time, priority, action, argument=(), kwargs={})

新しいイベントをスケジュールします。 time 引数は、コンストラクターに渡される timefunc 関数の戻り値と互換性のある数値型である必要があります。 同じ時間にスケジュールされたイベントは、優先度の順序で実行されます。 数値が小さいほど、優先度が高くなります。

イベントの実行とは、action(*argument, **kwargs)の実行を意味します。 引数は、アクションの位置引数を保持するシーケンスです。 kwargs は、 action のキーワード引数を保持する辞書です。

戻り値は、後でイベントをキャンセルするために使用できるイベントです( cancel()を参照)。

バージョン3.3で変更: 引数パラメーターはオプションです。

バージョン3.3で変更: kwargs パラメーターが追加されました。

scheduler.enter(delay, priority, action, argument=(), kwargs={})

遅延より多くの時間単位のイベントをスケジュールします。 相対時間以外の引数、効果、戻り値は enterabs()と同じです。

バージョン3.3で変更: 引数パラメーターはオプションです。

バージョン3.3で変更: kwargs パラメーターが追加されました。

scheduler.cancel(event)
キューからイベントを削除します。 event が現在キューにあるイベントでない場合、このメソッドは ValueError を発生させます。
scheduler.empty()
イベントキューが空の場合は、Trueを返します。
scheduler.run(blocking=True)

スケジュールされたすべてのイベントを実行します。 このメソッドは、(コンストラクターに渡されるdelayfunc()関数を使用して)次のイベントを待機し、スケジュールされたイベントがなくなるまでそれを実行します。

blocking がfalseの場合、最も早く期限切れになる予定のイベントを実行し(存在する場合)、次にスケジューラーで次のスケジュールされた呼び出しの期限を返します(存在する場合)。

action または delayfunc のいずれかで例外が発生する可能性があります。 いずれの場合も、スケジューラーは一貫した状態を維持し、例外を伝播します。 action によって例外が発生した場合、 run()の今後の呼び出しではイベントは試行されません。

一連のイベントの実行に次のイベントまでの時間よりも時間がかかる場合、スケジューラーは単に遅れます。 イベントは削除されません。 呼び出し元のコードは、関係がなくなったイベントをキャンセルする責任があります。

バージョン3.3で変更: ブロッキングパラメーターが追加されました。

scheduler.queue
実行される順序で今後のイベントのリストを返す読み取り専用属性。 各イベントは、名前付きタプルとして表示され、次のフィールドがあります:時間、優先度、アクション、引数、kwargs。