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 10 Python
python selenium UI自动化解决验证码的4种方法
Jan 05 Python
Python实现识别手写数字 Python图片读入与处理
Mar 23 Python
Numpy数据类型转换astype,dtype的方法
Jun 09 Python
python 返回一个列表中第二大的数方法
Jul 09 Python
python+gdal+遥感图像拼接(mosaic)的实例
Mar 10 Python
Python如何实现的二分查找算法
May 27 Python
python怎么自定义捕获错误
Jun 29 Python
Python TestSuite生成测试报告过程解析
Jul 23 Python
常用的10个Python实用小技巧
Aug 10 Python
Python3如何使用多线程升程序运行速度
Aug 11 Python
PyQt5 QDockWidget控件应用详解
Aug 12 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 get_meta_tags()函数
2014/05/12 PHP
PHP微信开发之有道翻译
2016/06/23 PHP
PHP页面输出时js设置input框的选中值
2016/09/30 PHP
yii2使用gridView实现下拉列表筛选数据
2017/04/10 PHP
浅谈PHP中pack、unpack的详细用法
2018/03/12 PHP
JavaScript 事件的一些重要说明
2009/10/25 Javascript
JavaScript操作XML 使用百度RSS作为新闻源示例
2012/02/17 Javascript
node.js中的fs.rename方法使用说明
2014/12/16 Javascript
基于Javascript实现弹出页面效果
2016/01/01 Javascript
JavaScript中捕获/阻止捕获、冒泡/阻止冒泡方法
2016/12/07 Javascript
json数据处理及数据绑定
2017/01/25 Javascript
详解AngularJS1.6版本中ui-router路由中/#!/的解决方法
2017/05/22 Javascript
JavaScript字符串_动力节点Java学院整理
2017/06/27 Javascript
Angular中管道操作符(|)的使用方法
2017/12/15 Javascript
JS实现利用闭包判断Dom元素和滚动条的方向示例
2019/08/26 Javascript
python计算最小优先级队列代码分享
2013/12/18 Python
python3+PyQt5+Qt Designer实现堆叠窗口部件
2018/04/20 Python
基于Numpy.convolve使用Python实现滑动平均滤波的思路详解
2019/05/16 Python
如何基于python测量代码运行时间
2019/12/25 Python
Python综合应用名片管理系统案例详解
2020/01/03 Python
使用TensorFlow直接获取处理MNIST数据方式
2020/02/10 Python
python3 os进行嵌套操作的实例讲解
2020/11/19 Python
HTTP状态码详解
2021/03/18 杂记
CSS3 实现弹跳的小球动画
2020/10/26 HTML / CSS
世界上最大的曲棍球商店:Pro Hockey Life
2017/10/30 全球购物
Petmate品牌官方网站:宠物用品
2018/11/25 全球购物
英国最大的自有市场,比亚马逊便宜:Flubit
2019/03/19 全球购物
美国名牌香水折扣网站:Hottperfume
2021/02/10 全球购物
服装销售人员求职自我评价
2013/09/26 职场文书
农村产权制度改革实施方案
2014/03/21 职场文书
教研活动总结
2014/04/28 职场文书
大学优秀班集体申报材料
2014/05/23 职场文书
2014年乡镇党建工作总结
2014/11/11 职场文书
《黄道婆》教学反思
2016/02/22 职场文书
2019感恩宣传标语!
2019/07/05 职场文书
用Python仅20行代码编写一个简单的端口扫描器
2022/04/08 Python