日期变化时执行的函数

0 投票
1 回答
632 浏览
提问于 2025-04-20 23:15

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

撰写回答