每次日期更改时,我都需要一个函数来执行。目前,我正在循环检查日期是否发生了变化,但我正在寻找一种更有效的方法。。。。在Python 中
感谢的任何帮助
您真正想要做的是调度在某个时间运行的函数。您需要使用调度机制来完成此操作。当然,你可以自己写一个,但最好的方法可能是使用一个为你做这件事的图书馆。
APScheduler
是一个非常成熟的很好的库。
文档:http://apscheduler.readthedocs.org/en/latest/
Pypi:https://pypi.python.org/pypi/APScheduler/3.0.0
示例
这里是一个快速的小例子
from apscheduler.schedulers.background import BlockingScheduler
scheduler = BlockingScheduler()
@scheduler.scheduled_job('interval', seconds=5, timezone='UTC')
def hello():
print('Hello!')
scheduler.start()
这将每五秒钟运行一次函数hello
。您可以将seconds=5
更改为days=1
,使其每天运行一次。您可以进行更多的配置,因此您可能需要阅读文档。它可以表达您想要的任何日期-时间格式,包括cron
。
它还支持不同类型的调度器,例如,我选择了BlockingScheduler
,因为我希望整个程序作为调度机制的一个函数运行(因此您可以在自己的系统上轻松尝试)。例如,您还可以使用BackgroundScheduler
,它将允许您以一种有效的方式从程序中调度任务,而不会阻塞主线程(修复您永远处于循环中的问题)。