zoukankan      html  css  js  c++  java
  • python定时器

    1、指定时间,每天定时运行

    def func():
        main_fun() ##主要的函数
        #如果需要循环调用,就要添加以下方法
        timer = threading.Timer(86400, func)
        #timer = threading.Timer(180, func)
        timer.start()
    
    
    
    if __name__ == '__main__':
        spmcs_conn = cx_Oracle.connect('%s','nbadv','%s',encoding = "UTF-8",nencoding = "UTF-8")
        cur = spmcs_conn.cursor()
        now_time = datetime.datetime.now()
        now_day = now_time.date().day
        # 获取明天时间
        next_time = now_time + datetime.timedelta(days=+1)
        next_year = next_time.date().year
        next_month = next_time.date().month
        next_day = next_time.date().day
        # 获取明天3点时间
        #next_time = datetime.datetime.strptime(str(next_year)+"-"+str(next_month)+"-"+str(next_day)+" 03:00:00", "%Y-%m-%d %H:%M:%S")
        next_time = datetime.datetime.strptime(str(next_year)+"-"+str(next_month)+"-"+str(next_day)+" 07:00:00", "%Y-%m-%d %H:%M:%S")
        # # 获取昨天时间
        # last_time = now_time + datetime.timedelta(days=-1)
        
        # 获取距离明天3点时间,单位为秒
        timer_start_time = (next_time - now_time).total_seconds()
        #print(timer_start_time)
        # 54186.75975
        #if timer_start_time >= 0:
        
        
        #定时器,参数为(多少时间后执行,单位为秒,执行的方法)
        timer = threading.Timer(timer_start_time, func)
        timer.start()
    

     2、隔一定时间运行程序

    import datetime
    import time
     
    def doSth():
        # 把爬虫程序放在这个类里
        print(u'这个程序要开始疯狂的运转啦')
     
    # 一般网站都是1:00点更新数据,所以每天凌晨一点启动
    def main(h=1,m=0):
        while True:
            now = datetime.datetime.now()
            # print(now.hour, now.minute)
            if now.hour == h and now.minute == m:
                doSth()
            # 每隔60秒检测一次
            time.sleep(60)
        
     
    main()
    

     

    import time
    from apscheduler.schedulers.background import BackgroundScheduler
    
    
    def job():
        print(time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time())))
    
    
    if __name__ == '__main__':
        # BackgroundScheduler: 适合于要求任何在程序后台运行的情况,当希望调度器在应用后台执行时使用
        scheduler = BackgroundScheduler()
        # 采用非阻塞的方式
    
        # 采用corn的方式
        scheduler.add_job(job, 'cron', day_of_week='fri', second='*/5')
        '''
        year (int|str) – 4-digit year
        month (int|str) – month (1-12)
        day (int|str) – day of the (1-31)
        week (int|str) – ISO week (1-53)
        day_of_week (int|str) – number or name of weekday (0-6 or mon,tue,wed,thu,fri,sat,sun)
        hour (int|str) – hour (0-23)
        minute (int|str) – minute (0-59)
        econd (int|str) – second (0-59)
                
        start_date (datetime|str) – earliest possible date/time to trigger on (inclusive)
        end_date (datetime|str) – latest possible date/time to trigger on (inclusive)
        timezone (datetime.tzinfo|str) – time zone to use for the date/time calculations (defaults to scheduler timezone)
            
        *    any    Fire on every value
        */a    any    Fire every a values, starting from the minimum
        a-b    any    Fire on any value within the a-b range (a must be smaller than b)
        a-b/c    any    Fire every c values within the a-b range
        xth y    day    Fire on the x -th occurrence of weekday y within the month
        last x    day    Fire on the last occurrence of weekday x within the month
        last    day    Fire on the last day within the month
        x,y,z    any    Fire on any matching expression; can combine any number of any of the above expressions
        '''
        scheduler.start()
        
        # 其他任务是独立的线程
        while True:
            print('main-start:', time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time())))
            time.sleep(2)
            print('main-end:', time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time())))
    

      ##https://www.jianshu.com/p/b77d934cc252

    上面的链接里讲述了很多定时器

    from apscheduler.schedulers.blocking import BlockingScheduler
    from datetime import datetime
    def job():
        print(datetime.now().strftime("%Y-%m-%d %H:%M:%S"))
    scheduler = BlockingScheduler()
    scheduler.add_job(job,"cron",hour ='8',minute= '59')
    scheduler.start()
    

      

  • 相关阅读:
    ZJOI2017
    李超线段树
    单调性优化dp
    ZJOI2018 树
    【ZJOI2017】汉诺塔
    暂存
    聚类的方法(层次聚类,K-means聚类)
    哈希表(散列表)
    多路查找树B树
    二叉排序树
  • 原文地址:https://www.cnblogs.com/xxupup/p/12083257.html
Copyright © 2011-2022 走看看