【问题标题】:Core.schedule decorator in VOLTTRONVOLTTRON 中的 Core.schedule 装饰器
【发布时间】:2016-09-26 13:29:57
【问题描述】:

如何使用 Core.schedule() 装饰器来安排任务在代理中的特定时间开始?我尝试使用 Core.schedule(deadline, *args, **kwargs) ,其中截止日期是日期和时间(即'2016-09-26 10:00:00'),但收到错误 args is not defined。

【问题讨论】:

    标签: python-decorators volttron


    【解决方案1】:

    通常调度方法不用作装饰器,因为调度回调只调用一次。 (我从来没有真正做过。)

    *args 和 **kwargs 是传递给函数的变量参数的占位符。见http://www.saltycrane.com/blog/2008/01/how-to-use-args-and-kwargs-in-python/

    在这种情况下,schedule 方法使用 *args 和 **kwargs 来存储传递给装饰器的任何额外参数,这些参数稍后会传递给被调用的函数。

    例如,如果我有一个代理方法 update_state(self, parameter1) 并且我想安排它在未来某个时间运行,该时间由名为 update_time 的日期时间对象和参数 1 的值指定的值 42 我可以做:

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

    update_time 需要是 python 日期时间对象或 unix 时间戳。

    要将其用作装饰器,您可以执行以下操作:

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

    当 update_time 到达时,它将被调用一次。如果您想安排另一个对 update_state 函数的调用,您需要计算出新时间并从 update_state 函数安排它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-10-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-03
      • 2015-11-18
      • 2018-06-08
      相关资源
      最近更新 更多