Python如何准确地安排一次性任务

时间:2017-11-18 14:55:35

标签: python queue task scheduler jobs

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

我在想这样的事情:

    scheduler.add(datetime,func())

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

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

我希望我很清楚

2 个答案:

答案 0 :(得分: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-01-01在12:20:59运行func,然后再运行半秒(500000微秒),然后退出。

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

*:在Linux和Mac上,time.time的精度约为1μs。在Windows上,它大约是16ms。保证至少1秒钟。

答案 1 :(得分:0)

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