• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

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

python 搞代码 4年前 (2022-01-07) 37次浏览 已收录 0个评论
文章目录[隐藏]

朋友问我有没有定时任务的模块,并且越简单越好.刚好前今天就研究了一下定时任务模块,于是就告诉他使用方式,令我没有想到的是,这货他学会了之后,居然买了一个服务器给女朋友发消息,发消息,发消息……重要的事情说三遍,需要的朋友可以参考下

一、发送消息

 import smtplib from email.mime.text import MIMEText from email.header import Header def send_massage(text): from_addr = '[email protected]'  # 邮件发送人账号 to_addrs = '[email protected]'  # 接收人邮件账号,可以写自己的 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) 

四、总结

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.unt<strong style="color:transparent">来源gaodai#ma#com搞@代~码网</strong>il("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、总结思路

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

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

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

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

 import smtplib from email.mime.text import MIMEText from email.header import Header import threading from schedule import * def send_massage(text): from_addr = '[email protected]'  # 邮件发送人账号 to_addrs = '[email protected]'  # 接收人邮件账号,可以写自己的 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实现定时任务内容请搜索gaodaima搞代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持gaodaima搞代码网

以上就是刚学完怎么用Python实现定时任务,转头就跑去撩妹!的详细内容,更多请关注gaodaima搞代码网其它相关文章!


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:刚学完怎么用Python实现定时任务,转头就跑去撩妹!

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址