Python 实现某个功能每隔一段时间被执行一次的功能方法


Posted in Python onOctober 14, 2018

本人在做项目的时候遇到一个问题:

某个函数需要在每个小时的 3 分钟时候被执行一次,我希望我 15:45 启动程序,过了18 分钟在 16:03 这个函数被执行一次,下一次过 60 分钟在 17:03 再次被执行,下一次 18:03,以此类推。

以下是我基于 Timer 做的再封装实现了此功能。

# -*- coding: utf-8 -*-
# ==================================================
# 对 Timer 做以下再封装的目的是:当某个功能需要每隔一段时间被
# 执行一次的时候,不需要在回调函数里对 Timer 做重新安装启动
# ==================================================
__author__ = 'liujiaxing'

from threading import Timer
from datetime import datetime

class MyTimer( object ):

 def __init__( self, start_time, interval, callback_proc, args=None, kwargs=None ):

  self.__timer = None
  self.__start_time = start_time
  self.__interval = interval
  self.__callback_pro = callback_proc
  self.__args = args if args is not None else []
  self.__kwargs = kwargs if kwargs is not None else {}

 def exec_callback( self, args=None, kwargs=None ):
  self.__callback_pro( *self.__args, **self.__kwargs )
  self.__timer = Timer( self.__interval, self.exec_callback )
  self.__timer.start()

 def start( self ):
  interval = self.__interval - ( datetime.now().timestamp() - self.__start_time.timestamp() )
  print( interval )
  self.__timer = Timer( interval, self.exec_callback )
  self.__timer.start()

 def cancel( self ):
  self.__timer.cancel() 
  self.__timer = None

class AA:
 def hello( self, name, age ):
  print( "[%s]\thello %s: %d\n" % ( datetime.now().strftime("%Y%m%d %H:%M:%S"), name, age ) )

if __name__ == "__main__":

 aa = AA()
 start = datetime.now().replace( minute=3, second=0, microsecond=0 )
 tmr = MyTimer( start, 60*60, aa.hello, [ "owenliu", 18 ] )
 tmr.start()
 tmr.cancel()

以上这篇Python 实现某个功能每隔一段时间被执行一次的功能方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python自动截取需要区域,进行图像识别的方法
May 17 Python
Python使用re模块正则提取字符串中括号内的内容示例
Jun 01 Python
对python的unittest架构公共参数token提取方法详解
Dec 17 Python
python os模块简单应用示例
May 23 Python
python和c语言的主要区别总结
Jul 07 Python
Python内存管理实例分析
Jul 10 Python
python实现微信自动回复机器人功能
Jul 11 Python
PyQt5中多线程模块QThread使用方法的实现
Jan 31 Python
python调用HEG工具批量处理MODIS数据的方法及注意事项
Feb 18 Python
解决Python发送Http请求时,中文乱码的问题
Apr 30 Python
完美解决keras保存好的model不能成功加载问题
Jun 11 Python
Django URL参数Template反向解析
Nov 24 Python
Python 实现异步调用函数的示例讲解
Oct 14 #Python
python 异或加密字符串的实例
Oct 14 #Python
python实现换位加密算法的示例
Oct 14 #Python
浅析Python 3 字符串中的 STR 和 Bytes 有什么区别
Oct 14 #Python
Python中实例化class的执行顺序示例详解
Oct 14 #Python
Python读取Excel表格,并同时画折线图和柱状图的方法
Oct 14 #Python
对python3中pathlib库的Path类的使用详解
Oct 14 #Python
You might like
Zend Framework中的简单工厂模式 图文
2012/07/10 PHP
PHP中curl_setopt函数用法实例分析
2015/04/16 PHP
php实现点击可刷新验证码
2015/11/07 PHP
PHP一个简单的无需刷新爬虫
2019/01/05 PHP
新手常遇到的一些jquery问题整理
2010/08/16 Javascript
基于jquery的仿百度的鼠标移入图片抖动效果
2010/09/17 Javascript
分享一个自定义的console类 让你不再纠结JS中的调试代码的兼容
2012/04/20 Javascript
JavaScript高级程序设计(第3版)学习笔记 概述
2012/10/11 Javascript
JQuery入门——事件切换之hover()方法应用介绍
2013/02/05 Javascript
jQuery动画animate方法使用介绍
2013/05/06 Javascript
标题过长使用javascript按字节截取字符串
2014/04/24 Javascript
jQuery中:lt选择器用法实例
2014/12/29 Javascript
jQuery实现动画效果circle实例
2015/08/06 Javascript
[原创]Javascript 实现广告后加载 可加载百度谷歌联盟广告
2016/05/11 Javascript
基于JavaScript实现淘宝商品广告效果
2017/08/10 Javascript
NodeJS设计模式总结【单例模式,适配器模式,装饰模式,观察者模式】
2017/09/06 NodeJs
简单谈谈CommonsChunkPlugin抽取公共模块
2017/12/31 Javascript
Node.js使用cookie保持登录的方法
2018/05/11 Javascript
JavaScript实现创建自定义对象的常用方式总结
2018/07/09 Javascript
详解JavaScript 为什么要有 Symbol 类型?
2019/04/03 Javascript
微信小程序批量监听输入框对按钮样式进行控制的实现代码
2019/10/12 Javascript
js实现数字从零慢慢增加到指定数字示例
2019/11/07 Javascript
Python常见工厂函数用法示例
2018/03/21 Python
Python3利用Dlib实现摄像头实时人脸检测和平铺显示示例
2019/02/21 Python
python字符串替换第一个字符串的方法
2019/06/26 Python
pytorch中tensor.expand()和tensor.expand_as()函数详解
2019/12/27 Python
Python 实现将某一列设置为str类型
2020/07/14 Python
Python 实现RSA加解密文本文件
2020/12/30 Python
CSS3选择器新增问题的实现
2021/01/21 HTML / CSS
Html5 web本地存储实例详解
2016/07/28 HTML / CSS
华润集团网上药店:健一网
2016/09/19 全球购物
汇智创新科技发展有限公司
2015/12/06 面试题
linux系统都有哪些运行级别
2012/04/15 面试题
会计毕业生自我鉴定
2013/11/04 职场文书
师范生自我鉴定
2014/03/20 职场文书
承兑汇票延期证明
2015/06/23 职场文书