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中bisect模块用法实例
Sep 25 Python
python实现将pvr格式转换成pvr.ccz的方法
Apr 28 Python
python中requests库session对象的妙用详解
Oct 30 Python
使用Python+Splinter自动刷新抢12306火车票
Jan 03 Python
python+matplotlib实现礼盒柱状图实例代码
Jan 16 Python
Python中的Numpy矩阵操作
Aug 12 Python
对pandas中iloc,loc取数据差别及按条件取值的方法详解
Nov 06 Python
通过shell+python实现企业微信预警
Mar 07 Python
python获取全国城市pm2.5、臭氧等空气质量过程解析
Oct 12 Python
Python时间差中seconds和total_seconds的区别详解
Dec 26 Python
解决Tensorflow sess.run导致的内存溢出问题
Feb 05 Python
Python3 webservice接口测试代码详解
Jun 23 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
codeigniter数据库操作函数汇总
2014/06/12 PHP
PHP定时执行任务实现方法详解(Timer)
2015/07/30 PHP
基于php实现七牛抓取远程图片
2015/12/01 PHP
joomla组件开发入门教程
2016/05/04 PHP
php实现用户注册密码的crypt加密
2017/06/08 PHP
javascript 新浪背投广告实现代码
2009/07/07 Javascript
jQuery布局插件UI Layout简介及使用方法
2013/04/03 Javascript
js阻止冒泡及jquery阻止事件冒泡示例介绍
2013/11/19 Javascript
JavaScript实现的图像模糊算法代码分享
2014/04/22 Javascript
sso跨域写cookie的一段js脚本(推荐)
2016/05/25 Javascript
jquery实现拖动效果
2016/08/10 Javascript
基于angularjs实现图片放大镜效果
2016/08/31 Javascript
jQuery插件WebUploader实现文件上传
2016/11/07 Javascript
js实现网页定位导航功能
2017/03/07 Javascript
js实现1,2,3,5数字按照概率生成
2017/09/12 Javascript
vue watch深度监听对象实现数据联动效果
2018/08/16 Javascript
解决layer弹出层自适应页面大小的问题
2019/09/16 Javascript
JavaScript中的this/call/apply/bind的使用及区别
2020/03/06 Javascript
[01:01:43]EG vs VP 2018国际邀请赛淘汰赛BO3 第二场 8.24
2018/08/25 DOTA
Python+Wordpress制作小说站
2017/04/14 Python
解决Ubuntu pip 安装 mysql-python包出错的问题
2018/06/11 Python
在Pandas中给多层索引降级的方法
2018/11/16 Python
Python中的heapq模块源码详析
2019/01/08 Python
python实现局域网内实时通信代码
2019/12/22 Python
Sephora丝芙兰澳洲官方网站:国际知名化妆品购物
2016/10/27 全球购物
松本清官方海外旗舰店:日本最大的药妆连锁店
2017/11/21 全球购物
WatchShop法国:英国排名第一的独立手表零售商
2020/02/17 全球购物
大学毕业生最详细的自我评价分享
2013/11/18 职场文书
副护士长竞聘演讲稿
2014/04/30 职场文书
店铺转让协议书
2014/12/02 职场文书
电信营业员岗位职责
2015/04/14 职场文书
2015年幼儿园大班工作总结
2015/04/25 职场文书
教师节获奖感言
2015/07/31 职场文书
2016年植树节红领巾广播稿
2015/12/17 职场文书
2016五四青年节活动总结范文
2016/04/06 职场文书
简单聊聊TypeScript只读修饰符
2022/04/06 Javascript