在python开发的过程中,经常见到小伙伴直接使用while True的死循环+sleep的方式来保存程序的一直运行。
这种方式虽然能达到效果,但是说不定什么时候就直接崩溃了。并且,在Linux环境中在检测到while True的未知进程就会直接干掉。
面对这样的业务场景,通常可以选择使用定时器的方式来完成,况且用法也比较简单。
在python中的定时任务用法通常有sched模块/threading.QTimer模块,sched模块在之前的历史文章中有过详细说明。
今天介绍的这个定时模块是某位大佬写的APScheduler定时器框架,强烈推荐使用这种方式来完成定时任务的开发。
这里我们开发一个print_datetime函数来打印当前的时间,同时也将print_time函数作为我们需要一直保持执行的任务。
# Importing the datetime module.
import datetime
print(message, datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S'))
然后,我们准备需要使用的定时任务模块apscheduler,可以选择pip的方式进行安装,我个人一直使用的是这样方式。
pip install apscheduler
# Importing the BlockingScheduler class from the apscheduler.schedulers.blocking module.
from apscheduler.schedulers.blocking import BlockingScheduler
至此,我们便可以将需要保持一直处于执行状态的业务函数,也就是这里的print_datetime函数作为定时中的任务执行。
如此,我们就不用使用while True死循环+sleep的方式来使任务一直保存在运行形状了。
# Creating a scheduler object.
scheduler = BlockingScheduler()
# Adding a job to the scheduler.
scheduler.add_job(func=print_time, args=('时间打印定时任务',), trigger='cron', second='*/1') # 每秒执行
# Starting the scheduler in a separate thread.
scheduler.start()
最后,直接启动当前的.py文件就能直接执行定时任务了,运行效果如下。
时间打印定时任务 2023-02-26 13:52:52
时间打印定时任务 2023-02-26 13:52:53
时间打印定时任务 2023-02-26 13:52:54
时间打印定时任务 2023-02-26 13:52:55
时间打印定时任务 2023-02-26 13:52:56
时间打印定时任务 2023-02-26 13:52:57
当然,作为定时任务的框架apscheduler,他还有很多的技能。比如:按更复杂的周期执行,在有限的时间内执行,单点执行等等。
下面是我列出的比较常见的apscheduler定时任务的执行方式,供小伙伴们参考,提出宝贵意见。
scheduler.add_job(func=print_time, args=('任务只执行一次,在下一次的时间执行',),
next_run_time=datetime.datetime.now() + datetime.timedelta(seconds=60))
scheduler.add_job(func=print_time, args=('时间打印定时任务',), trigger='interval', seconds=5) # 每5秒执行一次
scheduler.add_job(func=print_time, args=('时间打印定时任务',), trigger='interval', minutes=2) # 每2分钟执行一次
scheduler.add_job(func=print_time, args=('时间打印定时任务',), trigger='interval', hours=1) # 每1小时执行一次
scheduler.add_job(func=print_time, args=('时间打印定时任务',), trigger='cron', minute='*', second='1') # 每分钟执行一次
scheduler.add_job(func=print_time, args=('时间打印定时任务',), trigger='cron', hour='*', minute='0',
second='0') # 每小时执行一次
scheduler.add_job(func=print_time, args=('时间打印定时任务',), trigger='cron', hour='20', minute='0',
second='0') # 每天20:00执行一次
scheduler.add_job(func=print_time, args=('时间打印定时任务',), trigger='cron', hour='21') # 每天21:00执行一次
在使用过程中,apscheduler模块是最简单的调度类定时任务,欢迎小伙伴留言讨论!
在python开发的过程中,经常见到小伙伴直接使用while True的死循环+sleep的方式来保存程序的一直运行。这种方式虽然能达到效果,但是说不定什么时候就直接崩溃了。并且,在Linux环境中在检测到while True的未知进程就会直接干掉。面对这样的业务场景,通常可以选择使用定时器的方式来完成,况且用法也比较简单。
本任务是完成虚拟减肥跑步机,在程序中输入体重、跑步速度、运动时长等,实时显示当前的跑步状态。
通过
死循环
进行需要减肥的重量和年龄的录入以及数据合法性校验
通过while
循环
,实时计算跑步剩余时间、当前的跑步距离和消耗的卡路里
while
循环
while
循环
基本语法
while 真值表达式:
else:
先执行真值表达式,判断True/False
如果为True则执行语句块1,然后跳转到第1步
如果为 False则执行else子句部分的语句块2,然后结束此while语句的执行。
如果没有else子句,则直接结束此while语句
else 子句部分可以省略(同if语句类似)
while
循环
案例:求和计算器
需求描述:
现输入一个数n,求1到n之间所有数的和。
while
循环
while
循环
是在
Python
中的
循环
结构之一。 while
循环
继续,直到表达式变为假。表达的是一个逻辑表达式,必须返回一个true或false值,本文章向码农介绍
Python
while
循环
使用
方法,需要的朋友可以看一下本文章。
一个
循环
是一个结构,导致第一个程序要重复一定次数。重复不断
循环
的条件仍是如此。当条件变为假,
循环
结束和程序的控制传递给后面的语句
循环
。
while
循环
:
while
循环
是在
Python
中的
循环
结构之一。 while
循环
继续,直到表达式变为假。表达的是一个逻辑表达式,必须返回一个true或false值
while
循环
的语法是:
while expression:
*普通thread
*这是最常见的,创建一个thread,然后让它在while
循环
里一直运行着,
*通过sleep方法来达到
定时任务
的
效果
。这样可以快速简单的实现,代码如下:
Java语法中的
循环
操作逻辑控制顺序结构分支结构if语句switch 语句
循环
结构while
循环
breakcontinuefor
循环
do while
循环
顺序结构相对简单,就是按照顺序一行一行的写,如果调整书写代码,那么执行的顺序也会发生变化
public class Main{
public static void main(String[] args){
System.out.println("aa");
System.out.prin