所以我有这个python应用程序,我需要在特定的日期时间安排任务。
我在想这样的事情:
scheduler.add(datetime,func())
会在指定的日期和时间调用函数func但是准确。我想要几秒甚至几毫秒的准确度。
我搜索并找到了“调度程序”模块并尝试了它但你只能使用hh:mm格式而不是hh:mm:ss。
我希望我很清楚
答案 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
是一个函数