每次日期更改时我都需要执行一个函数。目前我正在检查循环以查看日期是否发生了变化,但我正在寻找一种更有效的方法......在Python中
任何帮助表示赞赏
答案 0 :(得分:2)
你真正想做的是安排在某个时间运行的功能。您需要使用调度机制执行此操作。当然,你可以自己写一个,但最好的方法是使用一个为你做这个的库。
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
,它允许您以有效的方式在程序中安排任务,而不会阻止主线程(修复您在循环中永远存在的问题)。