对python周期性定时器的示例详解


Posted in Python onFebruary 19, 2019

一、用thread实现定时器

py_timer.py文件

#!/usr/bin/python
#coding:utf-8

import threading
import os
import sys

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

  def cancel(self):
    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()
    
class LoopTimer(_Timer):
  def __init__(self, interval, function, args=[], kwargs={}):
    _Timer.__init__(self, interval, function, args, kwargs)

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


def testlooptimer():
  print("loop timer")


if __name__ == '__main__':
  t = LoopTimer(3.0,testlooptimer)
  t.start()

二、 使用

import py_timer

def serv_start():
#Perform first fork.
try:
      thread_timer = py_timer.LoopTimer(timeout, start_timer)
      thread_timer.start()
      thread_timer.cancel() #

    except Exception, ex:                            
      print("daemon: %s %s", type(ex), ex)



def start_timer():

print 'hello'

以上这篇对python周期性定时器的示例详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
详尽讲述用Python的Django框架测试驱动开发的教程
Apr 22 Python
Python开发之快速搭建自动回复微信公众号功能
Apr 22 Python
Python简单实现控制电脑的方法
Jan 22 Python
Python判断字符串是否为字母或者数字(浮点数)的多种方法
Aug 03 Python
Python实现微信消息防撤回功能的实例代码
Apr 29 Python
python itchat给指定联系人发消息的方法
Jun 11 Python
Tensorflow轻松实现XOR运算的方式
Feb 03 Python
Python requests模块cookie实例解析
Apr 14 Python
容易被忽略的Python内置类型
Sep 03 Python
Python+Selenium随机生成手机验证码并检查页面上是否弹出重复手机号码提示框
Sep 21 Python
Python利用Pillow(PIL)库实现验证码图片的全过程
Oct 04 Python
Matplotlib配色之Colormap详解
Jan 05 Python
Python3数字求和的实例
Feb 19 #Python
对Python定时任务的启动和停止方法详解
Feb 19 #Python
python的schedule定时任务模块二次封装方法
Feb 19 #Python
Python3 max()函数基础用法
Feb 19 #Python
Python3 log10()函数简单用法
Feb 19 #Python
Python3中exp()函数用法分析
Feb 19 #Python
详解Python3中ceil()函数用法
Feb 19 #Python
You might like
VFP与其他应用程序的集成
2006/10/09 PHP
PHP5中新增stdClass 内部保留类
2011/06/13 PHP
解析使用ThinkPHP应该掌握的调试手段
2013/06/20 PHP
ThinkPHP添加更新标签的方法
2014/12/05 PHP
php使用curl打开https网站的方法
2015/06/17 PHP
PHP 将数组打乱 shuffle函数的用法及简单实例
2016/06/17 PHP
PHP机器学习库php-ml的简单测试和使用方法
2017/07/14 PHP
thinkphp ajaxfileupload实现异步上传图片的示例
2017/08/28 PHP
基于JavaScript 类的使用详解
2013/05/07 Javascript
jquery实现的鼠标拖动排序Li或Table
2014/05/04 Javascript
js表头排序实现方法
2015/01/16 Javascript
Vue.js基础知识汇总
2016/04/27 Javascript
Bootstrap3使用typeahead插件实现自动补全功能
2016/07/07 Javascript
Node.js数据库操作之查询MySQL数据库(二)
2017/03/04 Javascript
详解React项目的服务端渲染改造(koa2+webpack3.11)
2018/03/19 Javascript
Vue自定义指令封装节流函数的方法示例
2018/07/09 Javascript
Nuxt.js实战和配置详解
2019/08/05 Javascript
vue 自定义组件的写法与用法详解
2020/03/04 Javascript
小程序分享链接onShareAppMessage的具体用法
2020/05/22 Javascript
解决vue watch数据的方法被调用了两次的问题
2020/11/07 Javascript
[02:56]DOTA2英雄基础教程 巨魔战将
2013/12/10 DOTA
[01:00:30]完美世界DOTA2联赛循环赛 Inki vs Matador BO2第二场 10.31
2020/11/02 DOTA
详解python的ORM中Pony用法
2018/02/09 Python
使用python获取电脑的磁盘信息方法
2018/11/01 Python
解决PyCharm控制台输出乱码的问题
2019/01/16 Python
Python3显示当前时间、计算时间差及时间加减法示例代码
2019/09/07 Python
Python多线程threading join和守护线程setDeamon原理详解
2020/03/18 Python
Python如何使用paramiko模块连接linux
2020/03/18 Python
Python调用REST API接口的几种方式汇总
2020/10/19 Python
python+selenium爬取微博热搜存入Mysql的实现方法
2021/01/27 Python
IRO美国官网:法国服装品牌
2018/03/06 全球购物
酒店中秋节活动方案
2014/01/31 职场文书
高中历史教学反思
2014/02/08 职场文书
责任书格式范文
2014/07/28 职场文书
2014年社区国庆节活动方案
2014/09/16 职场文书
HTML速写之Emmet语法规则的实现
2021/04/07 HTML / CSS