schedの14.11:時限イベントスケジューラ
schedのモジュールは、一般的なイベントスケジューラを実装しますが、タスクは、指定した時間に実行することができます。クラス・スケジューラは、現在の期間、一定の期間を待つために、さらに遅延機能の使用を把握する機能を使用しています。時間の特定の単位は重要ではないので、インタフェースは、多くの目的のために使用されるのに十分に柔軟です。時間関数を呼び出すときに、パラメータを指定せず、それが現在の時刻を表す数値を返します。整数の引数、時間関数で使用したのと同じ装置を提供する遅延機能を呼び出し、それがユニットを返す前に、イベントの指定された数のを待ちます。出力を理解することが容易であるので、例えば、時間モジュール単調()およびSLEEP()が、time.time()を使用して、このセクションの例は、(また、これらの要件を満たします)。マルチスレッド・アプリケーションをサポートするには、各イベントを生成した後遅延機能を呼び出すことができますし、他のスレッドが実行する機会を持っていることを保証するために、パラメータ0を提供しています。
14.11.1遅延実行されているイベントは、
遅延後、または実行するために、指定した時刻にイベントで実行するようにスケジュールすることができます。スケジュールされたイベントをすることができる遅延しなければならない
使用(入力)は、4つのパラメータを有する方法であって、
遅延の数を表す
の優先度の値
に呼び出される関数
の引数のタプル
この例イベントが異なる2に予定されています2秒、3秒を実行します。イベントの時間に達したら、それはイベントに渡さprint_event()、プリント名と時間のパラメータを呼び出します。
import sched
import time
scheduler = sched.scheduler(time.time,time.sleep)
def print_event(name,start):
now = time.time()
elapsed = int(now - start)
print('EVENT: {} elapsed={} name={}'.format(
time.ctime(now),elapsed,name))
start = time.time()
print('START:',time.ctime(start))
scheduler.enter(2,1,print_event,('first',start))
scheduler.enter(3,1,print_event,('second',start))
scheduler.run()
このプログラムを実行すると、次の出力を生成します。
最初に印刷されたイベントは、2秒後に開始時刻(開始)、イベントが3秒の開始時間であった第二時間(開始)の後です。