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编程实现语音控制电脑
Apr 01 Python
浅谈function(函数)中的动态参数
Apr 30 Python
对Python中range()函数和list的比较
Apr 19 Python
使用Python自动化破解自定义字体混淆信息的方法实例
Feb 13 Python
Python函数中参数是传递值还是引用详解
Jul 02 Python
python 根据字典的键值进行排序的方法
Jul 24 Python
python opencv实现证件照换底功能
Aug 19 Python
Python迭代器iterator生成器generator使用解析
Oct 24 Python
Pytorch之view及view_as使用详解
Dec 31 Python
Anaconda3+tensorflow2.0.0+PyCharm安装与环境搭建(图文)
Feb 18 Python
django日志默认打印request请求信息的方法示例
May 17 Python
详解Python IO编程
Jul 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
php设计模式 Command(命令模式)
2011/06/26 PHP
浅析php工厂模式
2014/11/25 PHP
PHP表单数据写入MySQL数据库的代码
2016/05/31 PHP
jquery实现浮动在网页右下角的彩票开奖公告窗口代码
2015/09/04 Javascript
原生js配合cookie制作保存路径的拖拽
2015/12/29 Javascript
js弹出窗口返回值的简单实例
2016/05/28 Javascript
JS实现屏蔽网页右键复制及ctrl+c复制的方法【2种方法】
2016/09/04 Javascript
jsp 自动编译机制详细介绍
2016/12/01 Javascript
es6学习笔记之Async函数基本教程
2017/05/11 Javascript
node跨域转发 express+http-proxy-middleware的使用
2018/05/31 Javascript
使用kbone解决Vue项目同时支持小程序问题
2019/11/08 Javascript
vue-video-player实现实时视频播放方式(监控设备-rtmp流)
2020/08/10 Javascript
vant-ui框架的一个bug(解决切换后onload不触发)
2020/11/11 Javascript
echarts饼图各个板块之间的空隙如何实现
2020/12/01 Javascript
举例详解Python中循环语句的嵌套使用
2015/05/14 Python
python 时间戳与格式化时间的转化实现代码
2016/03/23 Python
对pandas读取中文unicode的csv和添加行标题的方法详解
2018/12/12 Python
在pyqt5中QLineEdit里面的内容回车发送的实例
2019/06/21 Python
python顺序执行多个py文件的方法
2019/06/29 Python
使用pip安装python库的多种方式
2019/07/31 Python
解决Pycharm 包已经下载,但是运行代码提示找不到模块的问题
2019/08/31 Python
pytorch 图像中的数据预处理和批标准化实例
2020/01/15 Python
django 模型中的计算字段实例
2020/05/19 Python
Django filter动态过滤与排序实现过程解析
2020/11/26 Python
CSS3 实现图形下落动画效果
2020/11/13 HTML / CSS
详解快速开发基于 HTML5 网络拓扑图应用
2018/01/08 HTML / CSS
香蕉共和国加拿大官网:Banana Republic加拿大
2018/08/06 全球购物
Java面向对象面试题
2016/12/26 面试题
旅游管理实习自我鉴定
2013/09/29 职场文书
咖啡店自主创业商业计划书
2014/01/22 职场文书
个人四风问题原因分析及整改措施
2014/09/28 职场文书
2015年评职称工作总结范文
2015/04/20 职场文书
学生通报表扬范文
2015/05/04 职场文书
合作合同协议书
2016/03/21 职场文书
Python中rapidjson参数校验实现
2021/07/25 Python
Java时间工具类Date的常用处理方法
2022/05/25 Java/Android