【问题标题】:Python how do i accurately schedule one time tasksPython我如何准确地安排一次性任务
【发布时间】:2018-05-02 05:15:38
【问题描述】:

所以我有这个 python 应用程序,我需要在特定的日期时间安排任务。

我在想这样的事情:

    scheduler.add(datetime,func())

它会在指定的日期和时间准确地调用函数 func。我想要秒甚至毫秒的精度。

我搜索并找到了“调度程序”模块并尝试了它,但您只能使用 hh:mm 格式而不是 hh:mm:ss。

我希望我清楚

【问题讨论】:

    标签: python queue task scheduler jobs


    【解决方案1】:

    标准库中的sched 模块默认使用time.time,它具有很好的精度*。它具有与您描述的 API 相似的 API:

    import sched
    from datetime import datetime
    
    s = sched.scheduler()
    s.enterabs(datetime(2018, 1, 1, 12, 20, 59, 0).timestamp(), 1, func)
    s.enterabs(datetime(2018, 1, 1, 12, 20, 59, 500000).timestamp(), 1, func)
    s.run()
    

    此程序将在 2018 年 1 月 1 日 12:20:59 运行 func,然后在半秒(500000 微秒)后再次运行,然后退出。

    当然,您可以使用任何方式获取时间戳,包括从字符串中解析 datetime 并从那里开始工作,或者直接输入时间戳。


    *:在 Linux 和 Mac 上,time.time 的精度约为 1µs。在 Windows 上,大约为 16 毫秒。保证至少1秒。

    【讨论】:

    • 我不得不使用 s = sched.scheduler(time.time, time.sleep) 让你的代码在我的 python 发行版上工作。感谢您的帮助!
    【解决方案2】:

    也许在func,你应该在开头加上time.sleep(s),这样你就可以精确到第二个。另外,在传入函数时,传递func 而不是func(),因为func() 返回一个值,而func 是一个函数

    【讨论】:

      猜你喜欢
      • 2017-01-01
      • 2017-02-17
      • 1970-01-01
      • 1970-01-01
      • 2021-11-17
      • 2018-07-04
      • 1970-01-01
      • 2013-01-12
      • 1970-01-01
      相关资源
      最近更新 更多