对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标准日志模块logging的使用方法
Nov 01 Python
python服务器端收发请求的实现代码
Sep 29 Python
基于asyncio 异步协程框架实现收集B站直播弹幕
Sep 11 Python
Python selenium 三种等待方式详解(必会)
Sep 15 Python
Python中selenium实现文件上传所有方法整理总结
Apr 01 Python
一个基于flask的web应用诞生 组织结构调整(7)
Apr 11 Python
python互斥锁、加锁、同步机制、异步通信知识总结
Feb 11 Python
python绘制地震散点图
Jun 18 Python
Python API自动化框架总结
Nov 12 Python
tensorflow之自定义神经网络层实例
Feb 07 Python
Python如何使用OS模块调用cmd
Feb 27 Python
python在package下继续嵌套一个package
Apr 14 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
PHP按行读取、处理较大CSV文件的代码实例
2014/04/09 PHP
Yii框架中sphinx索引配置方法解析
2016/10/18 PHP
PHP面向对象程序设计之对象克隆clone和魔术方法__clone()用法分析
2019/06/12 PHP
php7 图形用户界面GUI 开发示例
2020/02/22 PHP
JavaScript中几种常见排序算法小结
2011/02/22 Javascript
JavaScript 表单处理实现代码
2015/04/13 Javascript
使用jQuery在对象中缓存选择器的简单方法
2015/06/30 Javascript
Javascript中arguments对象的详解与使用方法
2016/10/04 Javascript
微信小程序 倒计时组件实现代码
2016/10/24 Javascript
基于Angularjs+mybatis实现二级评论系统(仿简书)
2017/02/13 Javascript
JQuery.dataTables表格插件添加跳转到指定页
2017/06/09 jQuery
vue init webpack 建vue项目报错的解决方法
2018/09/29 Javascript
详解小程序之简单登录注册表单验证
2019/05/13 Javascript
webpack4 optimization使用总结
2019/11/10 Javascript
详解vue-flickity的fullScreen功能实现
2020/04/07 Javascript
JavaScript代码压缩工具UglifyJS和Google Closure Compiler的基本用法
2020/04/13 Javascript
浅谈JavaScript中this的指向更改
2020/07/28 Javascript
vant 自定义 van-dropdown-item的用法
2020/08/05 Javascript
[38:27]完美世界DOTA2联赛PWL S2 Forest vs FTD.C 第二场 11.26
2020/11/30 DOTA
python使用arp欺骗伪造网关的方法
2015/04/24 Python
简单讲解Python编程中namedtuple类的用法
2016/06/21 Python
Python字典,函数,全局变量代码解析
2017/12/18 Python
Python数据预处理之数据规范化(归一化)示例
2019/01/08 Python
django数据模型(Model)的字段类型解析
2019/12/25 Python
django日志默认打印request请求信息的方法示例
2020/05/17 Python
Python自动化操作实现图例绘制
2020/07/09 Python
Python3 用matplotlib绘制sigmoid函数的案例
2020/12/11 Python
html5 canvas简单封装一个echarts实现不了的饼图
2018/06/12 HTML / CSS
乐天旅游台湾网站:Rakuten Travel TW
2017/06/01 全球购物
美国伴娘礼服商店:Evening Collective
2019/10/07 全球购物
美国折扣香水网站:The Perfume Spot
2020/12/12 全球购物
质量承诺书范文
2014/03/27 职场文书
简易离婚协议书(范本)
2014/10/25 职场文书
Java8中接口的新特性使用指南
2021/11/01 Java/Android
Nginx图片服务器配置之后图片访问404的问题解决
2022/03/21 Servers
详解apache编译安装httpd-2.4.54及三种风格的init程序特点和区别
2022/07/15 Servers