探索神奇的Python库:Schedule

图片[1]-探索神奇的Python库:Schedule-山海云端论坛

简介

Schedule是一个轻量级的定时任务调度库,可以按照分钟、小时、天、星期几或特定日期来制定定时任务。

安装

通过pip安装Schedule非常简单,只需在命令行终端中输入以下内容:

<code>pip install schedule</code>

定时任务

Schedule的基本用法如下:

<code>import schedule def func(): print("这是一个方法") schedule.every(10).seconds.do(func) # 每10秒运行一次</code>

更多例子如下:

<code>schedule.every(10).minutes.do(job) schedule.every().hour.do(job) schedule.every().day.at("10:30").do(job) # 每天10点30分执行 schedule.every().monday.do(job) schedule.every().wednesday.at("13:15").do(job) schedule.every().day.at("12:42", "Europe/Amsterdam").do(job) schedule.every().hour.at(":42").do(job) # 每小时的第42分钟 schedule.every().minute.at(":17").do(job) # 每分钟的第17秒</code>

取消定时任务

<code>import schedule def some_task(): print('Hello world') job = schedule.every().day.at('22:30').do(some_task) schedule.cancel_job(job)</code>

任务只执行一次

<code>import schedule import time def job_that_executes_once(): # 这里写一个只要执行一次的方法 return schedule.CancelJob schedule.every().day.at('22:30').do(job_that_executes_once) while True: schedule.run_pending() time.sleep(1)</code>

获取所有任务和清除所有任务

<code>import schedule def hello(): print('Hello world') schedule.every().second.do(hello) all_jobs = schedule.get_jobs() schedule.clear()</code>

任务过滤

<code>import schedule def greet(name): print('Hello {}'.format(name)) schedule.every().day.do(greet, 'Andrea').tag('daily-tasks', 'friend') schedule.every().hour.do(greet, 'John').tag('hourly-tasks', 'friend') schedule.every().hour.do(greet, 'Monica').tag('hourly-tasks', 'customer') schedule.every().day.do(greet, 'Derek').tag('daily-tasks', 'guest') friends = schedule.get_jobs('friend') schedule.clear('daily-tasks')</code>

时间模糊

<code>def my_job(): print('你好') # 每5到10秒之间执行任务 schedule.every(5).to(10).seconds.do(my_job)</code>

到达指定时间,才开始执行任务

<code>import schedule from datetime import datetime, timedelta, time def job(): print('Boo') # 直到 18:30 才执行 schedule.every(1).hours.until("18:30").do(job) # 直到 2030-01-01 18:33 schedule.every(1).hours.until("2030-01-01 18:33").do(job) # 过8个小时后执行 schedule.every(1).hours.until(timedelta(hours=8)).do(job) # 直到 11:33:42后 schedule.every(1).hours.until(time(11, 33, 42)).do(job) # 到具体时间后执行 schedule.every(1).hours.until(datetime(2020, 5, 17, 11, 36, 20)).do(job)</code>

Schedule库非常强大,结合其他库可以完成各种定时任务。例如,可以结合Win10Toast库来实现通知功能,详情可参考”Win10Toast,一个神奇的Python库”的例子。

© 版权声明
THE END
喜欢就支持一下吧
点赞15 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容