Python 3.X 中定时器(Timer)的使用

系统 153 0

前言

每次要使用python的定时器的时候总是想着百度,干脆自己写一个记录一下:
使用的是两种方式实现,我一般喜欢用方式二Timer实现,下面看实现方式:

方式一:sched

准确的说,它是一个调度(延时处理机制),每次想要定时执行某任务都必须写入一个调度。

            
              
                '''
使用sched模块实现的timer,sched模块不是循环的,一次调度被执行后就Over了,
如果想再执行,可以使用while循环的方式不停的调用该方法
'''
              
              
                import
              
               time
              
                ,
              
               sched


              
                #被调度触发的函数
              
              
                def
              
              
                event_func
              
              
                (
              
              msg
              
                )
              
              
                :
              
              
                print
              
              
                (
              
              
                "Current Time:"
              
              
                ,
              
               time
              
                .
              
              strftime
              
                (
              
              
                "%y-%m-%d %H:%M:%S"
              
              
                )
              
              
                ,
              
              
                'msg:'
              
              
                ,
              
               msg
              
                )
              
              
                def
              
              
                run_function
              
              
                (
              
              
                )
              
              
                :
              
              
                #初始化sched模块的scheduler类
              
              
    s 
              
                =
              
               sched
              
                .
              
              scheduler
              
                (
              
              time
              
                .
              
              time
              
                ,
              
               time
              
                .
              
              sleep
              
                )
              
              
                #设置一个调度,因为time.sleep()的时间是一秒,所以timer的间隔时间就是sleep的时间,加上enter的第一个参数
              
              
    s
              
                .
              
              enter
              
                (
              
              
                0
              
              
                ,
              
              
                2
              
              
                ,
              
               event_func
              
                ,
              
              
                (
              
              
                "Timer event."
              
              
                ,
              
              
                )
              
              
                )
              
              
    s
              
                .
              
              run
              
                (
              
              
                )
              
              
                def
              
              
                timer1
              
              
                (
              
              
                )
              
              
                :
              
              
                while
              
              
                True
              
              
                :
              
              
                #sched模块不是循环的,一次调度被执行后就Over了,如果想再执行,可以使用while循环的方式不停的调用该方法
              
              
        time
              
                .
              
              sleep
              
                (
              
              
                1
              
              
                )
              
              
        run_function
              
                (
              
              
                )
              
              
                if
              
               __name__ 
              
                ==
              
              
                "__main__"
              
              
                :
              
              
    timer1
              
                (
              
              
                )
              
            
          

方式二:Timer

            
              
                '''
Timer类也是一次性触发的,思路和sched大概差不多
'''
              
              
                import
              
               time

              
                import
              
               threading


              
                def
              
              
                timer_start
              
              
                (
              
              
                )
              
              
                :
              
              
    t 
              
                =
              
               threading
              
                .
              
              Timer
              
                (
              
              
                1
              
              
                ,
              
               test_func
              
                ,
              
              
                (
              
              
                "Parameter1"
              
              
                ,
              
              
                )
              
              
                )
              
              
    t
              
                .
              
              start
              
                (
              
              
                )
              
              
                def
              
              
                test_func
              
              
                (
              
              msg1
              
                )
              
              
                :
              
              
                print
              
              
                (
              
              
                "I'm test_func,"
              
              
                ,
              
               msg1
              
                )
              
              
    timer_start
              
                (
              
              
                )
              
              
                def
              
              
                timer2
              
              
                (
              
              
                )
              
              
                :
              
              
    timer_start
              
                (
              
              
                )
              
              
                while
              
              
                True
              
              
                :
              
              
        time
              
                .
              
              sleep
              
                (
              
              
                1
              
              
                )
              
              
                if
              
               __name__ 
              
                ==
              
              
                "__main__"
              
              
                :
              
              
    timer2
              
                (
              
              
                )
              
            
          

虽然说上面的两种现实看起来都很蠢,但是如果不借助第三方的库,可能也只能这样了.


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请请扫描上面二维码支持博主1元、2元、5元等您想捐的金额吧,狠狠点击下面给点支持吧

发表我的评论
最新评论 总共0条评论