zoukankan      html  css  js  c++  java
  • 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这函数

     

     然后我们在看下一个例子

        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个函数

  • 相关阅读:
    C语言和go语言之间的交互
    Elasticsearch笔记九之优化
    Elasticsearch笔记八之脑裂
    Elasticsearch笔记七之setting,mapping,分片查询方式
    Elasticsearch笔记六之中文分词器及自定义分词器
    Elasticsearch笔记四之配置参数与核心概念
    Elasticsearch笔记三之版本控制和插件
    Elasticsearch笔记二之Curl工具基本操作
    Elasticsearch笔记五之java操作es
    Python处理Excel表格
  • 原文地址:https://www.cnblogs.com/bainianminguo/p/10325169.html
Copyright © 2011-2022 走看看