日期变化时执行的函数
我需要一个函数,每当日期变化时就能执行一次。目前我是在一个循环里检查日期是否变化,但我想找一种更有效的方法……用Python来实现。
任何帮助都很感谢。
1 个回答
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
,这样可以在程序内部高效地安排任务,而不会阻塞主线程(解决了你一直循环的问题)。