返回顶部
首页 > 资讯 > 后端开发 > Python >Python系列之循环定时器
  • 779
分享到

Python系列之循环定时器

定时器系列之Python 2023-01-31 02:01:53 779人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

近期在学习并使用python开发一些小工具,在这里记录方便回忆,也与各位开始走上这条路的朋友共勉,如有不正确希望指正,谢谢! 开始使用定时器时,度娘了下有没好的例子,本人比较懒,希望能直接使用。确实找到了一些,但是大多只是很直白的代码,

近期在学习并使用python开发一些小工具,在这里记录方便回忆,也与各位开始走上这条路的朋友共勉,如有不正确希望指正,谢谢!


开始使用定时器时,度娘了下有没好的例子,本人比较懒,希望能直接使用。确实找到了一些,但是大多只是很直白的代码,自己打算整理一下。

我选用了threading模块中的定时器,使用线程的优势就是可以不干扰现有进程的正常执行。首先我们看下源码

很简单的封装加上对线程的继承,函数也就是运行和取消,并有案例说明

# The timer class was contributed by Itamar Shtull-Trauring

def Timer(*args, **kwargs):
    """Factory function to create a Timer object.

    Timers call a function after a specified number of seconds:

        t = Timer(30.0, f, args=[], kwargs={})
        t.start()
        t.cancel()     # stop the timer's action if it's still waiting

    """
    return _Timer(*args, **kwargs)

class _Timer(Thread):
    """Call a function after a specified number of seconds:

            t = Timer(30.0, f, args=[], kwargs={})
            t.start()
            t.cancel()     # stop the timer's action if it's still waiting

    """

    def __init__(self, interval, function, args=[], kwargs={}):
        Thread.__init__(self)
        self.interval = interval
        self.function = function
        self.args = args
        self.kwargs = kwargs
        self.finished = Event()

    def cancel(self):
        """Stop the timer if it hasn't finished yet"""
        self.finished.set()

    def run(self):
        self.finished.wait(self.interval)
        if not self.finished.is_set():
            self.function(*self.args, **self.kwargs)
        self.finished.set()

在run函数中 我们不免可以看出,当启动定时器后,一直在等待,然后进行判断set状态,是否执行用户函数,那么所谓的cancel也不是立即取消,而是简单的置状态。判断后也是运行了与cancel一样的代码。所以我们看出这里的定时器是一次性的定时器,而我们需要循环定时器。


现有使用这种定时器进行循环运行的思路是启用2个定时器,进行相互调用。但是是不是逻辑和使用太复杂呢?

那么我们使用更简单的,直接继承timer修改下run函数即可:

class LoopTimer(_Timer):  
    """Call a function after a specified number of seconds:


            t = LoopTimer(30.0, f, args=[], kwargs={})
            t.start()
            t.cancel()     # stop the timer's action if it's still waiting


    """
    def __init__(self, interval, function, args=[], kwargs={}):
        _Timer.__init__(self,interval, function, args, kwargs)


    def run(self):
        '''self.finished.wait(self.interval)
        if not self.finished.is_set():
            self.function(*self.args, **self.kwargs)
        self.finished.set()'''
        while True:
            self.finished.wait(self.interval)
            if self.finished.is_set():
                self.finished.set()
                break
            self.function(*self.args, **self.kwargs)  

那么我们写了简单的例子测试

def testlooptimer():  
    print("I am loop timer.")     
      
t = LoopTimer(2,testlooptimer)  
t.start()

运行结果:

I am loop timer.
I am loop timer.
I am loop timer.
I am loop timer.


--结束END--

本文标题: Python系列之循环定时器

本文链接: https://lsjlt.com/news/185685.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Python系列之循环定时器
    近期在学习并使用Python开发一些小工具,在这里记录方便回忆,也与各位开始走上这条路的朋友共勉,如有不正确希望指正,谢谢! 开始使用定时器时,度娘了下有没好的例子,本人比较懒,希望能直接使用。确实找到了一些,但是大多只是很直白的代码,...
    99+
    2023-01-31
    定时器 系列之 Python
  • python从写循环定时器学习Time
    python 如何写一个定时器,循环定时做某一操作呢? Timer 对象 from threading import Timer def hello(): print "hello, world" t = Timer(...
    99+
    2023-01-31
    定时器 python Time
  • 好程序员Python培训分享Python系列之循环结构
      好程序员Python培训分享Python系列之循环结构,应用场景:我们在写程序的时候,一定会遇到需要重复执行某条或某些指令的场景。例如用程序控制机器人踢足球,如果机器人持球而且还没有进入射门范围,那么我们就要一直发出让机器人向球门方向移...
    99+
    2023-06-01
  • boost.asio框架系列之定时器Timer
    同步Timer asio中提供的timer名为deadline_timer,它提供了超时计时的功能。首先以一个最简单的同步Timer为例来演示如何使用它。 #include ...
    99+
    2024-04-02
  • 在 Python 中循环时更新列表时出错
    问题内容 为什么列表“spans”从未更新?我不明白为什么代码会陷入无限循环。 pdf:https://www.sil.org/system/files/reapdata/62/99/...
    99+
    2024-02-22
  • python之if循环
    if 条件:   if语句块else:   语句块 money = int(input("请输入你兜里的钱:")) if money > 500: print("吃肉") print("喝酒") p...
    99+
    2023-01-30
    python
  • 数据结构之——Python实现循环队列
    栈是先入后出,与之相反的是队列,队列是先进先出的线性结构。队列是只允许在一端进行插入操作,而在另一端进行删除操作的线性表。允许插入的一端称为队尾,允许删除的一端称为队头。 图1 队列的定义 队列的存储结构中使用的最多的是循...
    99+
    2023-01-31
    数据结构 队列 Python
  • SpringBoot开发实战系列之定时器
    前言 定时器功能在项目里面往往会用到,比如定时发送邮件、定时释放数据库资源;这里记录一下springboot对定时器的支持的简单实例 cron表达式 开始之前要先介绍一下cron表...
    99+
    2024-04-02
  • Python 以一个指定的间隔定时循环执
    http://www.linuxidc.com/Linux/2014-03/97555.htm 程序功能:指定一个或者同时多个固定的延迟(例如,5mins, 1hour,1 day, 1 week),程序按照这个指定的延迟定时循环执行某个...
    99+
    2023-01-31
    间隔 Python
  • 【Python】列表 List ⑦ ( 列表遍历 | 使用 while 循环遍历列表 | 使用 for 循环遍历列表 | while 循环 与 for 循环对比 )
    文章目录 一、使用 while 循环遍历列表1、while 循环遍历列表2、代码示例 - 使用 while 循环遍历列表 二、使用 for 循环遍历列表1、for 循环遍历列表2、for ...
    99+
    2023-10-25
    python list 列表 数据容器 PyCharm 原力计划
  • python基础之for循环
    For 循环 可以遍历字符串,也可以遍历列表 # for 循环 # 语法特点:遍历操作,依次取集合容器中的几个值 # for 临时变量 in 容器: # 执行代码...
    99+
    2024-04-02
  • Python全栈之for循环
    目录1. 双向循环的练习2. break_pass_continue的使用3. for循环小提示:4. 小练习问题:答案:总结1. 双向循环的练习 # 1.用两个循环完成十行十列...
    99+
    2024-04-02
  • JavaScript实现定时器循环展示数组
    本文实例为大家分享了JavaScript实现定时器循环展示数组的具体代码,供大家参考,具体内容如下 先看看效果图 流程 使用数组的slice() 方法通过条件判断截取原数组相应内容...
    99+
    2024-04-02
  • Python 的 map、列表推导、循环
    发现map最快,map返回的是迭代器,如果变成list则花的时间与循环差不多,其次是列表推导,最后是循环来写。 ...
    99+
    2023-01-31
    列表 Python map
  • JavaScript 闭包与定时器的时间之 轮:循环往复的异步编程
    闭包和定时器是JavaScript中实现异步编程的关键技术。闭包允许函数访问其创建范围内的变量,即使该函数已被调用并退出其作用域。定时器允许我们在特定时间延迟执行代码。 将闭包和定时器结合使用,我们可以创建一种称为“时间之轮”的循环往复的...
    99+
    2024-03-09
    JavaScript闭包与定时器的时间之轮:循环往复的异步编程
  • boost.asio框架系列之定时器Timer怎么使用
    这篇文章主要介绍“boost.asio框架系列之定时器Timer怎么使用”,在日常操作中,相信很多人在boost.asio框架系列之定时器Timer怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”boo...
    99+
    2023-07-02
  • python列表构建器如何实现循环
    这篇文章主要介绍python列表构建器如何实现循环,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!python的数据类型有哪些python的数据类型:1. 数字类型,包括int(整型)、long(长整型)和float(...
    99+
    2023-06-14
  • python学习之循环语句
    编程语言中的循环语句,以循环判断达式是否成立为条件,若表达式成立则循环执行该表达式,若不成立则跳出当前执行执行语句且继续执行其后代码。 如下图所示。 Python中提供以下循环方式 循环类型 描述 while 表达式: 若表达...
    99+
    2023-01-30
    语句 python
  • python基础之循环语句
    目录循环语句单分支如何使用双分支结构多分支的使用While 循环拳击游戏循环:总结循环语句 多分支 选择流程 If-else语句 单分支如何使用 # 单分支表...
    99+
    2024-04-02
  • Python全栈之单项循环
    目录1. 多项_巢状分支2. 循环结构2.1 循环结构2.2 单项循环的练习3. 字符串的切片4. 小练习问题:答案:总结1. 多项_巢状分支 多项分支 (多选一) """ if...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作