刚学完怎么用Python实现定时任务,转头就跑去撩妹!


Posted in Python onJune 05, 2021

一、发送消息

import smtplib
from email.mime.text import MIMEText
from email.header import Header
def send_massage(text):
    from_addr = '2469784691@qq.com'  # 邮件发送人账号
    to_addrs = '2469784691@qq.com'  # 接收人邮件账号,可以写自己的
    qqCode = 'ohkp123fmsldiji'  # 授权码(这个要填自己获取到的)
    stmp = smtplib.SMTP_SSL('smtp.qq.com', 465)# 配置服务器
    stmp.login(from_addr, qqCode)#发送人登陆
    message = MIMEText(text, 'plain', 'utf-8')  # 发送的内容
    message['From'] = Header("你的爱人", 'utf-8')  # 发件人
    message['To'] = Header("老婆", 'utf-8')  # 收件人
    subject = '每天都给你发消息'#主题
    message['Subject'] = Header(subject, 'utf-8')  # 邮件标题
    try:
        stmp.sendmail(from_addr, to_addrs, message.as_string())# 发送
    except Exception as e:
        print('邮件发送失败--' + str(e))
send_massage("因为痛苦太有价值,因为回忆太珍贵,所以我们更要继续往前走")

如图,这下,发送消息的函数已经有了,然后我们继续来看。

二、定时发送消息

女朋友说:我要你每天早上8点,给我发送一条消息。

A方案(无装饰器,传参)

a、不传参

模块只需要导入import schedule 

schedule.every().day.at("8:00").do(send_massage)#不传参数while True:#循环控制 schedule.run_pending()#run_pending:运行所有可以运行的任务
time.sleep(1)#防止运算速度过快,添加等待。如果不添加可能会导致计算机卡顿。Cpu直线飙升

就这么搞定了,然后女朋友又说了,你怎么没有给我发送内容。

好嘛,参数没传。

b、传参

schedule.every().day.at("8:00").do(send_massage,text="内容")#传参数,多个就传多个

B方案(有装饰器,传参)

a、不传参

from schedule import *
@repeat(every().day.at("8:00"))#在所需函数前添加
def send_massage(text):…
while True:#循环控制
    run_pending()#run_pending:运行所有可以运行的任务    
time.sleep(1)#防止运算速度过快,添加等待。如果不添加可能会导致计算机卡顿。Cpu直线飙升

b、传参

from schedule import *
@repeat(every().day.at("8:00"),text="内容")#在所需函数前添加,参数多个就传多个
def send_massage(text):…
while True:#循环控制
    run_pending()#run_pending:运行所有可以运行的任务
    time.sleep(1)#防止运算速度过快,添加等待。如果不添加可能会导致计算机卡顿。Cpu直线飙升

三、多线程发送消息

好了,现在女朋友的需求又变了,她说:我要你每天早上8:00给我发早安,晚上八点给我发晚安。中午你也还要发消息给我。

A方案(无装饰器,传参)

a、不传参

因为需要使用多线程,那肯定要使用模块threading

import threading
import schedule
需要添加一个多线程的函数,
def run_threaded(func):
    job_thread = threading.Thread(target=func)
    job_thread.start()
schedule.every().day.at("8:00").do(run_threaded,send_message)#线程1
schedule.every().day.at("20:00").do(run_threaded,send_message)#线程2,
while True:
    schedule.run_pending()
    time.sleep()

b、传递参数

需要给线程传递参数,再通过线程把参数传给函数:

def run_threaded(func,text):
    job_thread = threading.Thread(target=func,args=(text,))
    job_thread.start()
schedule.every().day.at("8:00").do(run_threaded,send_message,text="内容")#线程1
schedule.every().day.at("20:00").do(run_threaded,send_message,text="内容")#线程2
while True:
    schedule.run_pending()
    time.sleep(1)

B方案(有装饰器,传参)

a、不传参

装饰器不再使用对应函数上方,而使用在启动多线程函数的上方,添加一个装饰器表示一个任务,多添加几个就是多个了,是不是很神奇 

@repeat(every().day.at("8:00"),func=send_massage)
@repeat(every().day.at("20:00"),func=send_massage)
def run_threaded(func):
    job_thread = threading.Thread(target=func)
    job_thread.start()
while True:
    run_pending()    
time.sleep(1)

 b、传参

传参的方式也大同小异,装饰器不再使用对应函数上方,而使用在启动多线程函数的上方,如下:

@repeat(every().day.at("8:00"),func=send_massage,text="2354")
@repeat(every().day.at("20:00"),func=send_massage,text="235412341234")
def run_threaded(func,text):
    job_thread = threading.Thread(target=func,args=(text,))
    job_thread.start()
while True:
    run_pending()
    time.sleep(1)

刚学完怎么用Python实现定时任务,转头就跑去撩妹!

四、总结

1、常用方法名:

"""
second,秒;seconds
minute,分钟;minutes
hour,时;hours
day,天;days
monday,周一
tuesday,周二
wednesday,周三
thursday,周四
friday,周五
saturday,周六
sunday,周日
主要方法:
at  在……时候
to …到…
until   直到……时候
"""

2、常用函数方法:

a、无装饰器

schedule.every(10).seconds.do(job)#每10秒运行一次
schedule.every(10).minutes.do(job)#每隔十分钟执行一次任务
schedule.every().hour.do(job)#每小时运行一次
schedule.every().day.at("10:30").do(job)##每天的10:30执行一次任务
schedule.every(5).to(10).minutes.do(job)#每隔5到10分钟执行一次任务
schedule.every(5).to(10).days.do(job)#每隔5到10天执行一次任务
schedule.every().monday.do(job)#每周一的这个时候执行一次任务
schedule.every().wednesday.at("13:15").do(job)#每周三13:15执行一次任务
schedule.every().minute.at(":17").do(job)#每分钟在第17秒的时候执行任务
schedule.every().hour.at(":17").do(job)#每小时在第17分钟的时候执行任务
schedule.every().hours.until("18:30").do(job)# 每个小时运行作业,18:30结束
schedule.every().hours.until("2030-01-01 18:33").do(job)# 每个小时运行作业,2030-01-01 18:33后停止
schedule.every().hours.until(timedelta(hours=8)).do(job)# 每个小时运行作业,8个小时后停止

b、有装饰器

@repeat(every(10).seconds)#每10秒运行一次
@repeat(every(10).minutes)#每隔十分钟执行一次任务
@repeat(every().hour)#每小时运行一次
@repeat(every().day.at("10:30"))##每天的10:30执行一次任务
@repeat(every(5).to(10).minutes)#每隔5到10分钟执行一次任务
@repeat(every(5).to(10).days)#每隔5到10天执行一次任务
@repeat(every().monday)#每周一的这个时候执行一次任务
@repeat(every().wednesday.at("13:15"))#每周三13:15执行一次任务
@repeat(every().minute.at(":17"))#每分钟在第17秒的时候执行任务
@repeat(every().hour.at(":17"))#每小时在第17分钟的时候执行任务@repeat(every().hours.until("18:30"))# 每个小时运行作业,18:30结束@repeat(every().hours.until("2030-01-01 18:33"))# 每个小时运行作业,2030-01-01 18:33后停止
@repeat(every().hours.until(timedelta(hours=8)))# 每个小时运行作业,8个小时后停止

3、总结思路

其实单线程和多线程是相通的,重要的是融汇贯通。先掌握单线程,多线程也就迎刃而解了。

多线程唯一不同的不再是使用已确定的函数,而是转变为新开启一个线程去执行我们需要的函数。思路如图:

刚学完怎么用Python实现定时任务,转头就跑去撩妹!

五、定时给女朋友发送消息,完整代码

定时每天早上,晚上发送消息完整代码

import smtplib
from email.mime.text import MIMEText
from email.header import Header
import threading
from schedule import *
def send_massage(text):
    from_addr = '2469784691@qq.com'  # 邮件发送人账号
    to_addrs = '2469784691@qq.com'  # 接收人邮件账号,可以写自己的
    qqCode = 'ohkpw123fmsldiji'  # 授权码(这个要填自己获取到的)
    stmp = smtplib.SMTP_SSL('smtp.qq.com', 465)# 配置服务器
    stmp.login(from_addr, qqCode)#发送人登陆
    message = MIMEText(text, 'plain', 'utf-8')  # 发送的内容
    message['From'] = Header("你的爱人", 'utf-8')  # 发件人
    message['To'] = Header("老婆", 'utf-8')  # 收件人
    subject = '每天都给你发消息'#主题
    message['Subject'] = Header(subject, 'utf-8')  # 邮件标题
    try:
        stmp.sendmail(from_addr, to_addrs, message.as_string())# 发送
    except Exception as e:
        print('邮件发送失败--' + str(e))@repeat(every().day.at("10:00"),func=send_massage,text="早上好")#at之后时间不能小于当前时间。
@repeat(every().day.at("20:00"),func=send_massage,text="晚上好")
def run_thread(func,text):#多线程
    thread = threading.Thread(target=func,args=(text,))
    thread.start()
if __name__ == '__main__':
    while True:
        run_pending()
        time.sleep(1)

当看见他把代码部署到服务器,并每天给女朋友发送消息时,心里莫名的难受,买个服务器你用来挂机挣游戏挣金币不香吗?

到此这篇关于刚学完怎么用Python实现定时任务,转头就跑去撩妹!的文章就介绍到这了,更多相关Python实现定时任务内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
在Python的Bottle框架中使用微信API的示例
Apr 23 Python
Python中getattr函数和hasattr函数作用详解
Jun 14 Python
python操作xlsx文件的包openpyxl实例
May 03 Python
Python登录注册验证功能实现
Jun 18 Python
在python带权重的列表中随机取值的方法
Jan 23 Python
Python3实现的判断环形链表算法示例
Mar 07 Python
Python使用Turtle库绘制一棵西兰花
Nov 23 Python
vscode调试django项目的方法
Aug 06 Python
高考要来啦!用Python爬取历年高考数据并分析
Jun 03 Python
python基础之文件操作
Oct 24 Python
Python sklearn分类决策树方法详解
Sep 23 Python
OpenCV中resize函数插值算法的实现过程(五种)
Jun 05 #Python
OpenCV全景图像拼接的实现示例
opencv 分类白天与夜景视频的方法
python如何利用traceback获取详细的异常信息
Jun 05 #Python
Python异常类型以及处理方法汇总
Jun 05 #Python
Python OpenCV 彩色与灰度图像的转换实现
Python深度学习之实现卷积神经网络
You might like
用mysql内存表来代替php session的类
2009/02/01 PHP
php启用sphinx全文搜索的实现方法
2014/12/24 PHP
curl和libcurl的区别简介
2015/07/01 PHP
ThinkPHP控制器详解
2015/07/27 PHP
js取float型小数点后两位数的方法
2014/01/18 Javascript
input标签内容改变的触发事件介绍
2014/06/18 Javascript
JavaScript手风琴页面制作
2017/05/17 Javascript
webpack构建vue项目的详细教程(配置篇)
2017/07/17 Javascript
vue动态渲染svg、添加点击事件的实现
2020/03/13 Javascript
JS对象属性的检测与获取操作实例分析
2020/03/17 Javascript
Node.js API详解之 util模块用法实例分析
2020/05/09 Javascript
基于ajax及jQuery实现局部刷新过程解析
2020/09/12 jQuery
Vuejs通过拖动改变元素宽度实现自适应
2020/09/02 Javascript
微信小程序自定义tabBar的踩坑实践记录
2020/11/06 Javascript
windows下安装python paramiko模块的代码
2013/02/10 Python
使用Python编写Linux系统守护进程实例
2015/02/03 Python
python编程开发之类型转换convert实例分析
2015/11/13 Python
Python字符编码判断方法分析
2016/07/01 Python
Python运维之获取系统CPU信息的实现方法
2018/06/11 Python
完美解决python中ndarray 默认用科学计数法显示的问题
2018/07/14 Python
python判断完全平方数的方法
2018/11/13 Python
Python使用修饰器进行异常日志记录操作示例
2019/03/19 Python
python面试题小结附答案实例代码
2019/04/11 Python
Django单元测试中Fixtures的使用方法
2020/02/26 Python
python实现简单的购物程序代码实例
2020/03/03 Python
Python如何实现邮件功能
2020/05/27 Python
Python while true实现爬虫定时任务
2020/06/08 Python
Python datetime模块使用方法小结
2020/06/18 Python
PyTorch 导数应用的使用教程
2020/08/31 Python
Python 中Operator模块的使用
2021/01/30 Python
运动服饰每月订阅盒:Ellie
2018/04/29 全球购物
澳大利亚拥有最好的家具和家居用品在线目的地:Nestz
2019/02/23 全球购物
2015年宣传部部长竞选演讲稿
2014/11/28 职场文书
2015毕业生实习工作总结
2014/12/12 职场文书
教学督导岗位职责
2015/04/10 职场文书
JS继承最简单的理解方式
2021/03/31 Javascript