让我来详细讲解“Python定时任务sched模块用法示例”的完整攻略吧。
1. 什么是sched模块?
sched
(scheduler) 模块实现了一个通用的事件调度器,它可以在特定时间执行或者每隔一段时间执行某个任务。sched
模块非常适合按照时间表执行某些处理任务。通过使用 sched
模块,我们可以实现一些有趣的应用程序,如闹钟、定期数据备份等。
2. 如何使用sched模块?
在使用 sched
模块时,我们需要创建一个调度器对象( scheduler
),然后将需要执行的任务( event
)加入到调度器中。在 sched
模块中可以使用如下三个方法完成任务调度:
scheduler.enter(delay, priority, action, argument=(), kwargs={})
: 在指定时间(delay
秒后)执行指定的函数(action
)并传递指定的参数(argument
和kwargs
),scheduler.enterabs(time, priority, action, argument=(), kwargs={})
: 在指定的绝对时间(time
)执行指定的函数(action
)并传递指定的参数(argument
和kwargs
)。scheduler.run()
: 开始执行所有已经添加到调度器中的任务。
3. sched模块用法示例
示例一:打印当前时间
下面我们来看一个使用 sched
模块进行简单任务调度的示例 —— 打印当前时间:
import time
import sched
def print_time():
print("当前时间为:", time.strftime('%Y-%m-%d %H:%M:%S', time.localtime()))
def schedule_print_time(interval=5):
print_time()
scheduler.enter(interval, 1, schedule_print_time, (interval,))
if __name__ == '__main__':
delay = 5
# 创建调度器对象
scheduler = sched.scheduler(time.time, time.sleep)
# 将任务加入调度器
scheduler.enter(delay, 1, schedule_print_time, (delay,))
# 开始执行任务
scheduler.run()
在这个示例中,我们首先定义了一个 print_time
函数,用于打印当前时间。然后我们又定义了一个 schedule_print_time
函数,用于按照一定的时间间隔来调用 print_time
函数。最后,我们将 schedule_print_time
函数添加到调度器对象中,并将调度器开始执行。
示例二:邮件发送定时任务
我们也可以使用 sched
模块实现邮件发送的定时任务。只需要在指定的时间,执行调用发送邮件的函数即可。这里我们以 smtplib
作为邮件发送类库,示例如下:
import smtplib
import time
import sched
from email.mime.text import MIMEText
from email.header import Header
def send_email():
"""
发送邮件函数,发送邮件给自己,内容随意
"""
sender = 'sender@example.com'
receivers = ['receivers@example.com']
mail_msg = """
<p>Python 邮件发送测试...</p>
<p><a href="http://www.baidu.com">测试链接</a></p>
"""
message = MIMEText(mail_msg, 'html', 'utf-8')
message['From'] = Header("发送者", 'utf-8')
message['To'] = Header("接收者", 'utf-8')
subject = 'Python SMTP 邮件测试'
message['Subject'] = Header(subject, 'utf-8')
try:
smtpObj = smtplib.SMTP('localhost')
smtpObj.sendmail(sender, receivers, message.as_string())
print("邮件发送成功")
except smtplib.SMTPException:
print("Error: 无法发送邮件")
def send_email_func():
# 调用 seng_email() 函数发送邮件
send_email()
DELAY = 60
if __name__ == '__main__':
# 创建调度器对象
sche = sched.scheduler(time.time, time.sleep)
# 添加任务,设置发送邮箱间隔时间
sche.enter(DELAY, 1, send_email_func)
# 开始执行
sche.run()
在这个示例中,我们定义了一个 send_email
函数用于实现邮件发送,并定义了一个 send_email_func
函数,它将调用 send_email
函数执行邮件发送操作。然后,我们创建了一个调度器对象 sche
,并将 send_email_func
函数添加到调度器中,设置发送邮件间隔时间。最后,我们让调度器开始运行。这样,我们就实现了邮件定时发送任务。
好了,这就是关于 Python 中 sched 模块的用法介绍。希望对您有所帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python定时任务sched模块用法示例 - Python技术站