在python中,一般定时调度会使用apscheduler,更基础的我们会使用sched包来实时调度。有时候也是会使用time.sleep的方式来配合使用。在实际的生产中,单纯使用time.sleep会出现睡眼之后程序无法被唤醒的情况,所以后来会尽量的避免使用这种方式。
基于当前新的项目需求,做了一个简单的定时调度,即定好每天的指定时间执行特定的方法。具体如下图:
在这里,为了降低资源的使用,仍然添加了time.sleep方法,但实际上这个方法可有可无,因为程序本身是不停的在循环,但是在做空循环,资源的使用很少,几乎可以忽略,但是与让进程处于阻塞状态相比还是有一定的资源使用差异。这是还可以继续提升的方面。
还有一个点就是整体执行的稳健性。如apscheduler包,在程序报错后,并不会直接退出整个程序,在第二天仍然会重新执行整个程序。这是需要继续研究的地方。
其实我们在使用调度器,更多关心以下几个场景:
一、定时调度(指定时间执行)
二、间隔调度(间隔指定时间执行)
三、任务的增删改查
四、调度的可靠性
五、调度方法的易用性
六、异常问题处理机制
七、调度器对资源本身的高效分配
大多时间,我们是在资源和效率之间进行平衡。所以对于资源的开销调度至关重要。并发、并行、同步、异步等方法,我们需要做更多的尝试。