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中使用第三方库xlrd来读取Excel示例
Apr 05 Python
简单讲解Python中的数字类型及基本的数学计算
Mar 11 Python
Python实现将doc转化pdf格式文档的方法
Jan 19 Python
Python及Django框架生成二维码的方法分析
Jan 31 Python
python实现校园网自动登录的示例讲解
Apr 22 Python
python中aioysql(异步操作MySQL)的方法
Apr 11 Python
pytorch .detach() .detach_() 和 .data用于切断反向传播的实现
Dec 27 Python
Python实现动态循环输出文字功能
May 07 Python
Django使用rest_framework写出API
May 21 Python
opencv 图像礼帽和图像黑帽的实现
Jul 07 Python
Python 防止死锁的方法
Jul 29 Python
Python实现生成bmp图像的方法
Jun 13 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
PHP调用三种数据库的方法(3)
2006/10/09 PHP
BBS(php & mysql)完整版(一)
2006/10/09 PHP
thinkPHP数据库增删改查操作方法实例详解
2016/12/06 PHP
用JQuery 实现AJAX加载XML并解析的脚本
2009/07/25 Javascript
jQuery窗口、文档、网页各种高度的精确理解
2014/07/02 Javascript
js单独获取一个checkbox看其是否被选中
2014/09/22 Javascript
小白谈谈对JS原型链的理解
2016/05/03 Javascript
javaScript事件学习小结(四)event的公共成员(属性和方法)
2016/06/09 Javascript
关于Jquery中的事件绑定总结
2016/10/26 Javascript
JavaScript中递归实现的方法及其区别
2017/09/12 Javascript
JS脚本实现网页自动秒杀点击
2018/01/11 Javascript
vue分页器组件编写方法详解
2019/06/28 Javascript
Vuex的API文档说明详解
2020/02/05 Javascript
如何搜索查找并解决Django相关的问题
2014/06/30 Python
Python实现的检测网站挂马程序
2014/11/30 Python
Python编程之序列操作实例详解
2017/07/22 Python
Python把csv数据写入list和字典类型的变量脚本方法
2018/06/15 Python
Python函数中参数是传递值还是引用详解
2019/07/02 Python
python爬虫selenium和phantomJs使用方法解析
2019/08/08 Python
Python字符串格式化输出代码实例
2019/11/22 Python
浅析关于Keras的安装(pycharm)和初步理解
2020/10/23 Python
Python3 用什么IDE开发工具比较好
2020/11/28 Python
整理HTML5的一些新特性与Canvas的常用属性
2016/01/29 HTML / CSS
localStorage、sessionStorage使用总结
2017/11/17 HTML / CSS
美国时尚孕妇装品牌:A Pea in the Pod
2017/07/16 全球购物
英国领先的体验日提供商:Buyagift
2019/04/19 全球购物
非功能性需求都包括哪些方面
2013/10/29 面试题
函授毕业自我鉴定
2013/12/19 职场文书
一份创业计划书范文
2014/02/08 职场文书
生日礼品店创业计划书范文
2014/03/21 职场文书
跑吧孩子观后感
2015/06/10 职场文书
保护地球的宣传语
2015/07/13 职场文书
缅怀先烈主题班会
2015/08/14 职场文书
怎样评估创业计划书是否有可行性?
2019/08/07 职场文书
2019年中,最受大众欢迎的6本新书
2019/08/07 职场文书
Windows11插耳机没反应怎么办? win11耳机没声音的多种解决办法
2021/11/21 数码科技