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发布模块的步骤分享
Feb 21 Python
python解析xml文件实例分析
May 27 Python
Python基于PycURL实现POST的方法
Jul 25 Python
python中实现延时回调普通函数示例代码
Sep 08 Python
python实现图书管理系统
Mar 12 Python
Python3批量生成带logo的二维码方法
Jun 24 Python
python算法与数据结构之单链表的实现代码
Jun 27 Python
使用Keras加载含有自定义层或函数的模型操作
Jun 10 Python
Python获取excel内容及相关操作代码实例
Aug 10 Python
Python批量修改xml的坐标值全部转为整数的实例代码
Nov 26 Python
python实现b站直播自动发送弹幕功能
Feb 20 Python
一篇文章弄懂Python中的内建函数
Aug 07 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实现文件安全下载
2006/10/09 PHP
php 保留小数点
2009/04/21 PHP
thinkPHP基于ajax实现的菜单与分页示例
2016/07/12 PHP
php实现有序数组打印或排序的方法【附Python、C及Go语言实现代码】
2016/11/10 PHP
详解在YII2框架中使用UEditor编辑器发布文章
2018/11/02 PHP
jQuery实现表单input中提示文字value随鼠标焦点移进移出而显示或隐藏的代码
2010/03/21 Javascript
Document对象内容集合(比较全)
2010/09/06 Javascript
javascript解决IE6下hover问题的方法
2015/07/28 Javascript
JS实现带有3D立体感的银灰色竖排折叠菜单代码
2015/10/20 Javascript
java必学必会之static关键字
2015/12/03 Javascript
JavaScript中函数声明与函数表达式的区别详解
2016/08/18 Javascript
微信小程序 http请求详细介绍
2016/10/09 Javascript
Javascript实现倒计时(防页面刷新)实例
2016/12/13 Javascript
webuploader模态框ueditor显示问题解决方法
2016/12/27 Javascript
jQuery插件FusionCharts绘制的3D环饼图效果示例【附demo源码】
2017/04/02 jQuery
bootstrap3使用bootstrap datetimepicker日期插件
2017/05/24 Javascript
js原生代码实现轮播图的实例讲解
2017/07/28 Javascript
jQuery中 DOM节点操作方法大全
2017/10/12 jQuery
vxe-table vue table 表格组件功能
2019/05/26 Javascript
React路由鉴权的实现方法
2019/09/05 Javascript
基于JavaScript实现十五拼图代码实例
2020/04/26 Javascript
python如何生成网页验证码
2018/07/28 Python
Python异常的检测和处理方法
2018/10/26 Python
在pandas多重索引multiIndex中选定指定索引的行方法
2018/11/16 Python
Python基于百度云文字识别API
2018/12/13 Python
12个Python程序员面试必备问题与答案(小结)
2019/06/24 Python
Python Selenium 之数据驱动测试的实现
2019/08/01 Python
Python实现SMTP邮件发送
2020/06/16 Python
HTML5 canvas基本绘图之填充样式实现
2016/06/27 HTML / CSS
Nanushka官网:匈牙利服装品牌
2019/08/14 全球购物
平面设计师工作职责范文
2013/12/03 职场文书
实习评语
2013/12/16 职场文书
工作的心得体会
2013/12/31 职场文书
保险内勤岗位职责
2014/04/05 职场文书
医院保洁服务方案
2014/06/11 职场文书
Matplotlib可视化之添加让统计图变得简单易懂的注释
2021/06/11 Python