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 相关文章推荐
使用cx_freeze把python打包exe示例
Jan 24 Python
Python编程求解二叉树中和为某一值的路径代码示例
Jan 04 Python
对pandas进行数据预处理的实例讲解
Apr 20 Python
Python+selenium 获取一组元素属性值的实例
Jun 22 Python
使用WingPro 7 设置Python路径的方法
Jul 24 Python
解决python多行注释引发缩进错误的问题
Aug 23 Python
如何基于Python创建目录文件夹
Dec 31 Python
Pytorch: 自定义网络层实例
Jan 07 Python
python开发实例之Python的Twisted框架中Deferred对象的详细用法与实例
Mar 19 Python
python实现画图工具
Aug 27 Python
Python SMTP发送电子邮件的示例
Sep 23 Python
python process模块的使用简介
May 14 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 SPL标准库之数据结构堆(SplHeap)简单使用实例
2015/05/12 PHP
php中switch语句用法详解
2015/08/17 PHP
jQuery弹出层插件简化版代码下载
2008/10/16 Javascript
javascript面向对象之Javascript 继承
2010/05/04 Javascript
js校验表单后提交表单的三种方法总结
2014/02/28 Javascript
使用jquery中height()方法获取各种高度大全
2014/04/02 Javascript
javascript实现获取cookie过期时间的变通方法
2014/08/14 Javascript
jQuery.extend 函数及用法详细
2015/09/06 Javascript
基于JS实现翻书效果的页面切换样式
2017/02/16 Javascript
JS得到当前时间的方法示例
2017/03/24 Javascript
angular学习之从零搭建一个angular4.0项目
2017/07/10 Javascript
Vue-Router2.X多种路由实现方式总结
2018/02/09 Javascript
使用vue.js在页面内组件监听scroll事件的方法
2018/09/11 Javascript
jQuery.parseJSON()函数详解
2019/02/28 jQuery
python实现的系统实用log类实例
2015/06/30 Python
Python中正则表达式详解
2017/05/17 Python
使用python批量化音乐文件格式转换的实例
2019/01/09 Python
解决Django no such table: django_session的问题
2020/04/07 Python
如何使用Python处理HDF格式数据及可视化问题
2020/06/24 Python
Python:__eq__和__str__函数的使用示例
2020/09/26 Python
法国家具及室内配件店:home24
2017/01/21 全球购物
Vrbo英国:预订度假屋
2020/08/19 全球购物
介绍java中初始化块的使用
2012/09/11 面试题
创业计划书中包含的9个方面
2013/12/26 职场文书
党校培训思想汇报
2014/01/03 职场文书
2014学校领导四风问题对照检查材料思想汇报
2014/09/22 职场文书
文员转正自我鉴定怎么写
2014/09/29 职场文书
情人节活动总结范文
2015/02/05 职场文书
2015年中秋节演讲稿
2015/03/20 职场文书
2015年先进个人自荐书
2015/03/24 职场文书
银行稽核岗位职责
2015/04/13 职场文书
2016年暑期社会实践活动总结报告
2016/04/06 职场文书
如何写好竞聘报告
2019/04/03 职场文书
广告策划的实习心得体会总结!
2019/07/22 职场文书
新学期新寄语,献给新生们!
2019/11/15 职场文书
Go语言实现Base64、Base58编码与解码
2021/07/26 Golang