python的定时任务模块–schedule详解编程语言

首先先安装一下模块

python的定时任务模块--schedule详解编程语言

下面我们简单的学习一下schedule模块

先简单的看个示例

    import schedule 
 
    def test(*args,**kwargs): 
        print("hello world 1",datetime.datetime.now()) 
 
 
    schedule.every(1).minute.do(test) 
 
 
    while True: 
        schedule.run_pending() 

  

结果如下,我们可以看到,每隔一分钟执行了一次test这函数

 python的定时任务模块--schedule详解编程语言

 然后我们在看下一个例子

    import schedule 
 
    import time 
    def test1(*args,**kwargs): 
        print("这是test1的函数") 
        time.sleep(5) 
        print("这是test1的函数",datetime.datetime.now()) 
 
    def test2(*args,**kwargs): 
        print("这是test2的函数") 
        time.sleep(5) 
        print("这是test2的函数",datetime.datetime.now()) 
 
 
 
    schedule.every(10).seconds.do(test1) 
    schedule.every(10).seconds.do(test2) 
 
    while True: 
        schedule.run_pending() 

结果如下

这是test2的函数 
这是test2的函数 2019-02-11 09:33:55.615493 
这是test1的函数 
这是test1的函数 2019-02-11 09:34:00.623102 
这是test2的函数 
这是test2的函数 2019-02-11 09:34:10.638319 
这是test1的函数 
这是test1的函数 2019-02-11 09:34:15.645928 
这是test2的函数 
这是test2的函数 2019-02-11 09:34:25.661146 
这是test1的函数 
这是test1的函数 2019-02-11 09:34:30.668755 
这是test2的函数 
这是test2的函数 2019-02-11 09:34:40.683972 
这是test1的函数 
这是test1的函数 2019-02-11 09:34:45.691581 
这是test2的函数 
这是test2的函数 2019-02-11 09:34:55.706799 
这是test1的函数 
这是test1的函数 2019-02-11 09:35:00.714407 
这是test2的函数 
这是test2的函数 2019-02-11 09:35:10.729625 
这是test1的函数 
这是test1的函数 2019-02-11 09:35:15.737234 
这是test2的函数 
这是test2的函数 2019-02-11 09:35:25.752451 
这是test1的函数 
这是test1的函数 2019-02-11 09:35:30.760060 
这是test2的函数 
这是test2的函数 2019-02-11 09:35:40.775278 
这是test1的函数 

 从结果我们可以很清晰的看到,执行test1和test2两个函数,不是每隔10s执行一次,而是每隔15s执行一次,所以我们可以理解,schedule模块如果去同时执行多个函数的话,这些不同的函数不是开启多线程并行执行的,而是串行执行的,为了解决这个问题,我们可以用到python的多线程模块来解决这个问题

下面我们就通过多线程模块来解决这个问题

    import schedule 
    import threading 
 
    import time 
    def test1(*args,**kwargs): 
        print("这是test1的函数") 
        time.sleep(5) 
        print("这是test1的函数",datetime.datetime.now()) 
 
    def test2(*args,**kwargs): 
        print("这是test2的函数") 
        time.sleep(5) 
        print("这是test2的函数",datetime.datetime.now()) 
 
    def sch_test1(): 
        threading.Thread(target=test1).start() 
 
 
    def sch_test2(): 
        threading.Thread(target=test2).start() 
 
 
    schedule.every(10).seconds.do(sch_test1) 
    schedule.every(10).seconds.do(sch_test2) 
 
    while True: 
        schedule.run_pending() 

结果如下

这是test1的函数 
这是test2的函数 
这是test2的函数 2019-02-11 09:42:03.022749 
这是test1的函数 2019-02-11 09:42:03.022749 
这是test2的函数 
这是test1的函数 
这是test2的函数 2019-02-11 09:42:13.037967 
这是test1的函数 2019-02-11 09:42:13.053567 
这是test1的函数 
这是test2的函数 
这是test2的函数 2019-02-11 09:42:23.053184 
这是test1的函数 2019-02-11 09:42:23.068784 
这是test1的函数 
这是test2的函数 
这是test2的函数 2019-02-11 09:42:33.068402 
这是test1的函数 2019-02-11 09:42:33.068402 
这是test1的函数 
这是test2的函数 
这是test1的函数 2019-02-11 09:42:43.083620 
这是test2的函数 2019-02-11 09:42:43.083620 
这是test2的函数 
这是test1的函数 
这是test2的函数 2019-02-11 09:42:53.098837 
这是test1的函数 2019-02-11 09:42:53.114437 
这是test2的函数 
这是test1的函数 
这是test1的函数 2019-02-11 09:43:03.114055 
这是test2的函数 2019-02-11 09:43:03.114055 
这是test1的函数 
这是test2的函数 
这是test2的函数 2019-02-11 09:43:13.129272 
这是test1的函数 2019-02-11 09:43:13.160472 
这是test1的函数 
这是test2的函数 
这是test1的函数 2019-02-11 09:43:23.144490 
这是test2的函数 2019-02-11 09:43:23.144490 

从上面的结果我们可以看到,2个函数之间没有干扰了,每隔10s后分别执行了2个函数

原创文章,作者:Maggie-Hunter,如若转载,请注明出处:https://blog.ytso.com/20768.html

(0)
上一篇 2021年7月19日
下一篇 2021年7月19日

相关推荐

发表回复

登录后才能评论