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入门篇之文件
Oct 20 Python
讲解Python中fileno()方法的使用
May 24 Python
Python selenium如何设置等待时间
Sep 15 Python
Python3.x对JSON的一些操作示例
Sep 01 Python
使用 Python 合并多个格式一致的 Excel 文件(推荐)
Dec 09 Python
python numpy数组复制使用实例解析
Jan 10 Python
Mysql数据库反向生成Django里面的models指令方式
May 18 Python
python归并排序算法过程实例讲解
Nov 04 Python
Python调用高德API实现批量地址转经纬度并写入表格的功能
Jan 12 Python
python3 删除所有自定义变量的操作
Apr 08 Python
python实现股票历史数据可视化分析案例
Jun 10 Python
Python OpenCV实现图形检测示例详解
Apr 08 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
域名查询代码公布
2006/10/09 PHP
晋城吧对DiscuzX进行的前端优化要点
2010/09/05 PHP
php强制下载类型的实现代码
2011/04/21 PHP
php中防止SQL注入的最佳解决方法
2013/04/25 PHP
PHP循环输出指定目录下的所有文件和文件夹路径例子(简单实用)
2014/05/10 PHP
PHP上传Excel文件导入数据到MySQL数据库示例
2016/10/25 PHP
Swoole扩展的6种模式深入详解
2021/03/04 PHP
top.location.href 没有权限 解决方法
2008/08/05 Javascript
学习ExtJS border布局
2009/10/08 Javascript
浅谈javascript语法和定时函数
2015/05/03 Javascript
Javascript中For In语句用法实例
2015/05/14 Javascript
js+css实现文字散开重组动画特效代码分享
2015/08/21 Javascript
Node.js中Request模块处理HTTP协议请求的基本使用教程
2016/03/31 Javascript
React应用中使用Bootstrap的方法
2017/08/15 Javascript
小程序组件之自定义顶部导航实例
2019/06/12 Javascript
Vue实现商品详情页的评价列表功能
2019/09/04 Javascript
处理JavaScript值为undefined的7个小技巧
2020/07/28 Javascript
JavaScript实现网页留言板功能
2020/11/23 Javascript
Python编程语言的35个与众不同之处(语言特征和使用技巧)
2014/07/07 Python
Python中datetime常用时间处理方法
2015/06/15 Python
总结Python编程中函数的使用要点
2016/03/20 Python
Linux CentOS7下安装python3 的方法
2018/01/21 Python
关于Tensorflow中的tf.train.batch函数的使用
2018/04/24 Python
windows下cx_Freeze生成Python可执行程序的详细步骤
2018/10/09 Python
解决python3.5 正常安装 却不能直接使用Tkinter包的问题
2019/02/22 Python
python try except返回异常的信息字符串代码实例
2019/08/15 Python
win10安装tesserocr配置 Python使用tesserocr识别字母数字验证码
2020/01/16 Python
Python+PyQt5实现灭霸响指功能
2020/05/25 Python
HTML5头部标签的一些常用信息小结
2016/10/23 HTML / CSS
美术专业个人自我评价
2014/01/18 职场文书
学生操行评语大全
2014/04/24 职场文书
手术室护士个人总结
2015/02/13 职场文书
市场督导岗位职责
2015/04/10 职场文书
给朋友的道歉短信
2015/05/12 职场文书
余世维讲座观后感
2015/06/11 职场文书