通过Python3实现任务的定时循环执行

在我们的实际开发中,经常有这样的一种需求:要求某个功能模块或任务在相同的时间周期内进行循环执行。这里有了一个定时器的概念,具体而言我们应该如何去实现一个定时器呢?定时器有许多很实用的功能,能够控制线程的执行、减少系统的消耗等。现在我们来动手实践实现python3中的定时功能吧。

通过Python3实现任务的定时循环执行

比如使用Python在进行爬虫系统开发时可能就需要间隔一段时间就重复执行的任务的需求,从而实现一个线程服务在后台监控数据的抓取状态,这里定时器就可以帮忙了。

【视频推荐:Python3视频教程】

【手册推荐:Python中文手册】

立即学习“Python免费学习笔记(深入)”;

通过Python的文档我们可以找到threading.Timer()来实现定时功能:

简单实现代码:

import threadingdef func1(a):    #Do something    print('Do something')    a+=1    print(a)    print('当前线程数为{}'.format(threading.activeCount()))    if a>5:        return    t=threading.Timer(5,func1,(a,))    t.start()

登录后复制

效果图:

360截图17981126696374.png

通过查阅资料,利用Python能实现三种不同的定时任务执行方式:

1.定时任务代码

#!/user/bin/env python#定时执行任务命令import time,os,schedschedule = sched.scheduler(time.time,time.sleep)def perform_command(cmd,inc):  os.system(cmd)  print('task')def timming_exe(cmd,inc=60):  schedule.enter(inc,0,perform_command,(cmd,inc))  schedule.run()print('show time after 2 seconds:')timming_exe('echo %time%',2)

登录后复制

2.周期性执行任务

#!/user/bin/env pythonimport time,os,schedschedule = sched.scheduler(time.time,time.sleep)def perform_command(cmd,inc):  #在inc秒后再次运行自己,即周期运行  schedule.enter(inc, 0, perform_command, (cmd, inc))  os.system(cmd)def timming_exe(cmd,inc=60):  schedule.enter(inc,0,perform_command,(cmd,inc))  schedule.run()#持续运行,直到计划时间队列变成空为止print('show time after 2 seconds:')timming_exe('echo %time%',2)

登录后复制

3.循环执行命令

#!/user/bin/env pythonimport time,osdef re_exe(cmd,inc = 60):  while True:    os.system(cmd)    time.sleep(inc)re_exe("echo %time%",5)

登录后复制

总结而言:Python实现定时器的方法都是schedule和threading的实现,具体的用法还要根据实际情况灵活运用。

最常用的两个模块:threading、Sched

threading模块使用:

import threading ,timefrom time import sleep, ctimeclass Timer(threading.Thread):        """        very simple but useless timer.        """        def __init__(self, seconds):                self.runTime = seconds                threading.Thread.__init__(self)        def run(self):                time.sleep(self.runTime)                print ("Buzzzz!! Time's up!")class CountDownTimer(Timer):        """        a timer that can counts down the seconds.        """        def run(self):                counter = self.runTime                for sec in range(self.runTime):                        print (counter)                        time.sleep(1.0)                        counter -= 1                print ("Done") class CountDownExec(CountDownTimer):        """        a timer that execute an action at the end of the timer run.        """        def __init__(self, seconds, action, args=[]):                self.args = args                self.action = action                CountDownTimer.__init__(self, seconds)        def run(self):                CountDownTimer.run(self)                self.action(self.args) def myAction(args=[]):        print ("Performing my action with args:")        print (args) if __name__ == "__main__":        t = CountDownExec(3, myAction, ["hello", "world"])        t.start()        print("2333")

登录后复制

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()

登录后复制

以上就是通过Python3实现任务的定时循环执行的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2533179.html

(0)
上一篇 2025年3月5日 21:09:53
下一篇 2025年3月5日 17:42:50

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • python基础学习之算数运算符、比较运算符

     近期几年只要互联网行业对于python的火热程度只增不减,很多人都在学习python,但想真正学好还得打好基础。本篇文章的主要内容是关于python的算数运算符和比较运算符,附带示例代码讲解,感兴趣的朋友可以学习了解一下。 算术运算符 运…

    编程技术 2025年3月5日
    200
  • python基础学习之逻辑运算符、成员运算符、运算符优先级

     衔接前面两篇文章,本篇文章将继续和大家讲述Python的基础学习之逻辑运算符、成员运算符以及运算符优先级,具有很高的学习价值,感兴趣的朋友了解一下。 逻辑运算符 Python语言支持逻辑运算符,以下假设变量 a 为 10, b为 20: …

    编程技术 2025年3月5日
    200
  • python3学习之异常处理及文件的各种操作

    本篇文章主要讲述的是python3的异常处理以及文件的各种操作,具有一定的收藏价值,感兴趣的朋友可以了解一下,希望对你有所帮助。 异常处理:是为了避免程序因为一个小问题而导致程序终止 try: 可能出现异常的代码块 except: 立即学习…

    编程技术 2025年3月5日
    200
  • python2为什么变成3

    初学者都会遇到的一个问题,为什么python2变成python3?python2和python3哪个好,该学习哪个才好呢? 在 Python 的圈子里,关于 Python 2 和 Python 3 的争论持续不断,总是一波未平一波又起。虽然…

    2025年3月5日
    200
  • win10怎么安装python3?

    win10安装python3的步骤: 1、在官网下载Python3.6.4 2、下载完成后,双击安装包文件安装 3、勾选Add Python 3.6 to PATH(勾选此选项在安装时自动配置环境变量),点击Customize instal…

    2025年3月5日 编程技术
    200
  • python有什么版本

    目前python的主流版本有python2和python3。python2预计在2020年停止维护。初学者建议直接学习python3。 接下来说一说Python2与Python3的差异。 基本语法差异 核心类差异 立即学习“Python免费…

    2025年3月5日
    200
  • php time 时间不对怎么办

    php time时间不对是因为当前时区设置不对,其解决办法:首先找到并打开PHP.ini文件;然后修改时间为“date.timezone = Asia/Shanghai”即可。 本文操作环境:windows7系统、PHP7.1版,DELL …

    2025年3月5日
    200
  • Python3里的super()和__class__使用介绍

    子类里访问父类的同名属性,而又不想直接引用父类的名字,因为说不定什么时候会去修改它,所以数据还是只保留一份的好。其实呢,还有更好的理由不去直接引用父类的名字,参见 python’s super() considered supe…

    编程技术 2025年3月4日
    200
  • WPF MaterialDesign 示例开源项目介绍

      Hello all , 我又回来了   这次我们真是开始来聊聊开源项目里,小而有用的模块或者组件的开发思想。   同时,软件已经更新到1.60的版本了,支持新用户注册,可以不再使用统一的test账户了。   您可以通过以下路径进行下载:…

    编程技术 2025年3月3日
    200
  • Go语言基础之time包详解

    time.Now() time.Now()返回的是一个Time类型。 相关代码如下 func main() {    var nowTime = time.Now()    fmt.Println(nowTime)    var year …

    2025年3月2日 编程技术
    200

发表回复

登录后才能评论