刚学完怎么用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 相关文章推荐
Python3 入门教程 简单但比较不错
Nov 29 Python
用python实现面向对像的ASP程序实例
Nov 10 Python
Python将阿拉伯数字转换为罗马数字的方法
Jul 10 Python
tornado 多进程模式解析
Jan 15 Python
对Python中DataFrame按照行遍历的方法
Apr 08 Python
python实现Windows电脑定时关机
Jun 20 Python
Python 查找list中的某个元素的所有的下标方法
Jun 27 Python
Python实现的合并两个有序数组算法示例
Mar 04 Python
python实现扫描ip地址的小程序
Apr 16 Python
利用Python实现某OA系统的自动定位功能
May 27 Python
利用Python实现朋友圈中的九宫格图片效果
Sep 03 Python
利用python查看数组中的所有元素是否相同
Jan 08 Python
OpenCV中resize函数插值算法的实现过程(五种)
Jun 05 #Python
OpenCV全景图像拼接的实现示例
opencv 分类白天与夜景视频的方法
python如何利用traceback获取详细的异常信息
Jun 05 #Python
Python异常类型以及处理方法汇总
Jun 05 #Python
Python OpenCV 彩色与灰度图像的转换实现
Python深度学习之实现卷积神经网络
You might like
全国中波电台频率表
2020/03/11 无线电
php 函数使用方法与函数定义方法
2010/05/09 PHP
php数组去重的函数代码
2013/02/03 PHP
什么是PEAR?什么是PECL?PHP中两个容易混淆的概念解释
2015/07/01 PHP
PHP类的封装与继承详解
2015/09/29 PHP
Zend Framework教程之Zend_Db_Table_Row用法实例分析
2016/03/21 PHP
php metaphone()函数的定义和用法
2016/05/15 PHP
PHP实现一个多功能购物网站的案例
2017/09/13 PHP
Lazy Load 延迟加载图片的 jQuery 插件
2010/02/06 Javascript
JQuery 动画卷页 返回顶部 动画特效(兼容Chrome)
2010/02/15 Javascript
cookie 最近浏览记录(中文escape转码)具体实现
2013/06/08 Javascript
浏览器兼容console对象的简要解决方案分享
2013/10/24 Javascript
javascript跨域的4种方法和原理详解
2014/04/08 Javascript
JS实现的页面自定义滚动条效果
2015/10/26 Javascript
浅析Javascript匿名函数与自执行函数
2016/02/06 Javascript
jQuery获取父元素及父节点的方法小结
2016/04/14 Javascript
Bootstrap源码解读下拉菜单(4)
2016/12/23 Javascript
Vue.js实战之Vuex的入门教程
2017/04/01 Javascript
jquery在启动页面时,自动加载数据的实例
2018/01/22 jQuery
快速处理vue渲染前的显示问题
2018/03/05 Javascript
vue实现树形结构样式和功能的实例代码
2019/10/15 Javascript
vue如何使用外部特殊字体的操作
2020/07/30 Javascript
Vue使用轮询定时发送请求代码
2020/08/10 Javascript
Scrapy使用的基本流程与实例讲解
2018/10/21 Python
pyqt5对用qt designer设计的窗体实现弹出子窗口的示例
2019/06/19 Python
Python中Pyspider爬虫框架的基本使用详解
2021/01/27 Python
几个解决兼容IE6\7\8不支持html5标签的几个方法
2013/01/07 HTML / CSS
世界上最大的二手相机店:KEN
2017/05/17 全球购物
美国在线咖啡、茶和餐厅供应商:LollicupStore
2018/05/04 全球购物
数控技术应届生求职信
2013/11/13 职场文书
销售员态度差检讨书
2014/10/26 职场文书
先进事迹材料怎么写
2014/12/30 职场文书
2015年世界环境日活动方案
2015/05/05 职场文书
海洋天堂观后感
2015/06/05 职场文书
python用海龟绘图写贪吃蛇游戏
2021/06/18 Python
vue如何在data中引入图片的正确路径
2022/06/05 Vue.js