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使用urlparse分析网址中域名的方法
Apr 15 Python
python2和python3的输入和输出区别介绍
Nov 20 Python
python爬虫URL重试机制的实现方法(python2.7以及python3.5)
Dec 18 Python
python+mysql实现教务管理系统
Feb 20 Python
python抓取搜狗微信公众号文章
Apr 01 Python
PythonWeb项目Django部署在Ubuntu18.04腾讯云主机上
Apr 01 Python
Appium+python自动化怎么查看程序所占端口号和IP
Jun 14 Python
python f-string式格式化听语音流程讲解
Jun 18 Python
python 求定积分和不定积分示例
Nov 20 Python
django queryset相加和筛选教程
May 18 Python
Python使用tkinter制作在线翻译软件
Feb 22 Python
python 开心网和豆瓣日记爬取的小爬虫
May 29 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
jquery pagination插件实现无刷新分页代码
2009/10/13 Javascript
javascript学习笔记(十) js对象 继承
2012/06/19 Javascript
js弹出层包含flash 不能关闭隐藏的2种处理方法
2013/06/17 Javascript
js判断输入是否为数字的具体实例
2013/08/03 Javascript
jquery submit ie6下失效的原因分析及解决方法
2013/11/15 Javascript
原生js实现移动开发轮播图、相册滑动特效
2015/04/17 Javascript
js实现刷新iframe的方法汇总
2015/04/27 Javascript
jQuery基于正则表达式的表单验证功能示例
2017/01/21 Javascript
React Native中Navigator的使用方法示例
2017/10/13 Javascript
js 索引下标之li集合绑定点击事件
2018/01/12 Javascript
vue打包相关细节整理(小结)
2018/09/28 Javascript
基于Vue-Cli 打包自动生成/抽离相关配置文件的实现方法
2018/12/09 Javascript
Angular脚手架开发的实现步骤
2019/04/09 Javascript
微信小程序scroll-view实现滚动到锚点左侧导航栏点餐功能(点击种类,滚动到锚点)
2020/06/11 Javascript
javascript前端实现多视频上传
2020/12/13 Javascript
Python拼接微信好友头像大图的实现方法
2018/08/01 Python
python通过配置文件共享全局变量的实例
2019/01/11 Python
django基于存储在前端的token用户认证解析
2019/08/06 Python
Python3的socket使用方法详解
2020/02/18 Python
django rest framework 自定义返回方式
2020/07/12 Python
HTML5 canvas基本绘图之绘制阴影效果
2016/06/27 HTML / CSS
Html5实现单张、多张图片上传功能
2019/04/28 HTML / CSS
详解移动端html5页面长按实现高亮全选文本内容的兼容解决方案
2016/12/03 HTML / CSS
Gap中国官网:美式休闲风服饰
2017/02/05 全球购物
在DELPHI中调用存储过程和使用内嵌SQL哪种方式更好
2016/11/22 面试题
理工大学毕业生自荐信
2013/11/01 职场文书
施工安全协议书
2013/12/11 职场文书
财务会计人员求职的自我评价
2014/01/13 职场文书
美发店5.1活动方案
2014/01/24 职场文书
化学教育专业求职信
2014/07/08 职场文书
财产保全担保书
2015/01/20 职场文书
河童之夏观后感
2015/06/11 职场文书
2015年基层党建工作汇报材料
2015/06/25 职场文书
商务信函英语问候语
2015/11/10 职场文书
小学英语新课改心得体会
2016/01/22 职场文书
go语言中fallthrough的用法说明
2021/05/06 Golang