0

Core.schedule() デコレーターを使用して、エージェント内で特定の時間にタスクを開始するようにスケジュールするにはどうすればよいですか? Core.schedule(deadline, *args, **kwargs) を使用してみましたが、ここで締切は日時です (つまり、'2016-09-26 10:00:00') が、エラー args is not defined を受け取りました。

4

1 に答える 1

0

通常、スケジュールされたコールバックは 1 回だけ呼び出されるため、スケジュール メソッドはデコレータとして使用されません。(実際にやった事はありません。)

*args と **kwargs は、関数に渡される可変引数のプレースホルダーです。http://www.saltycrane.com/blog/2008/01/how-to-use-args-and-kwargs-in-python/を参照してください

この場合、スケジュール メソッドは *args と **kwargs を使用して、後で呼び出された関数に渡されるデコレーターに渡された追加の引数を格納します。

たとえば、エージェント メソッド update_state(self, parameter1) があり、update_time という datetime オブジェクトと parameter1 の値の値 42 によって指定された将来のある時点で実行するようにスケジュールしたい場合、次のように実行できます。

self.core.schedule(update_time, self.update_state, 42)

update_time は、Python の datetime オブジェクトまたは UNIX のタイム スタンプである必要があります。

これをデコレータとして使用するには、次のようにします。

Core.schedule(update_time, 42)
def update_state(self, parameter1):
    pass

update_time が到着すると、一度呼び出されます。update_state 関数への別の呼び出しをスケジュールする場合は、新しい時間を把握し、update_state 関数からスケジュールする必要があります。

于 2016-09-26T20:02:43.593 に答える