Python如何实现定时器功能


Posted in Python onMay 28, 2020

Timer: 隔一定时间调用一个函数,如果想实现每隔一段时间就调用一个函数的话,就要在Timer调用的函数中,再次设置Timer。Timer是Thread的一个派生类

python中的线程提供了java线程功能的子集。

#!/usr/bin/env python
from threading import Timer
import time
timer_interval=1
def delayrun():
 print 'running'
t=Timer(timer_interval,delayrun)
t.start()
while True:
 time.sleep(0.1)
 print 'main running'

t是一个Timer对象。delay一秒钟之后执行delayrun函数。

其中time.sleep函数是用来让主线程暂停一点时间再继续执行。

实例扩展:

Python3定时器任务代码

import time
import sys
import signal
import datetime
import threading
#定时器
def schedule_update():
  t = threading.Timer(0, event_func)
  t.setDaemon(True)
  t.start()
#执行函数
def event_func():
  now_time = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
  print(now_time)
  exec_update()
  #update_openvas_dbs_from_cache()
  interval_time = delay_time()
  t = threading.Timer(interval_time, event_func)
  t.setDaemon(True)
  t.start()
#取时间点
def delay_time():
  # now time
  now_time = datetime.datetime.now()
  # tomorrow time
  next_time = now_time + datetime.timedelta(days=+1)
  next_year = next_time.date().year
  next_month = next_time.date().month
  next_day = next_time.date().day
  # get tomorrow 00:00
  next_time = datetime.datetime.strptime(str(next_year)+"-"+str(next_month)+"-"+str(next_day)+" 00:00:00", "%Y-%m-%d %H:%M:%S")
  # get secondes
  delay_time = (next_time - now_time).total_seconds()
  return delay_time
def quit_sys(signum, frame):
  sys.exit()
#接收C
if __name__ == "__main__":
  try:
    signal.signal(signal.SIGINT, quit_sys)
    signal.signal(signal.SIGTERM, quit_sys)
    schedule_update()
    print("schedule_update server starting up...\nHit Ctrl-C to quit.\n")
    while 1:
      time.sleep(1)
  except Exception as e:
    print(e)

到此这篇关于Python如何实现定时器功能的文章就介绍到这了,更多相关Python中的简单定时器实例内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python求导数的方法
May 09 Python
利用python获取Ping结果示例代码
Jul 06 Python
用python编写第一个IDA插件的实例
May 29 Python
浅谈Pandas:Series和DataFrame间的算术元素
Dec 22 Python
使用Python实现毫秒级抢单功能
Jun 06 Python
使用OpenCV实现仿射变换—平移功能
Aug 29 Python
解决Python3下map函数的显示问题
Dec 04 Python
python中if及if-else如何使用
Jun 02 Python
python3检查字典传入函数键是否齐全的实例
Jun 05 Python
Python创建临时文件和文件夹
Aug 05 Python
django项目中使用云片网发送短信验证码的实现
Jan 19 Python
Python实现仓库管理系统
May 30 Python
python实点云分割k-means(sklearn)详解
May 28 #Python
Python脚本实现监听服务器的思路代码详解
May 28 #Python
python中Ansible模块的Playbook的具体使用
May 28 #Python
python中如何进行连乘计算
May 28 #Python
python线程池如何使用
May 28 #Python
python中前缀运算符 *和 **的用法示例详解
May 28 #Python
PHP基于phpqrcode类库生成二维码过程解析
May 28 #Python
You might like
模拟OICQ的实现思路和核心程序(一)
2006/10/09 PHP
模拟SQLSERVER的两个函数:dateadd(),datediff()
2006/10/09 PHP
php判断电脑访问、手机访问的例子
2014/05/10 PHP
PHP转盘抽奖接口实例
2015/02/09 PHP
PHP实现Huffman编码/解码的示例代码
2018/04/20 PHP
jQuery弹出层插件简化版代码下载
2008/10/16 Javascript
JQuery 引发两次$(document.ready)事件
2010/01/15 Javascript
JavaScript中的一些定位属性[图解]
2010/07/14 Javascript
DWR实现模拟Google搜索效果实现原理及代码
2013/01/30 Javascript
JavaScript实现页面实时显示当前时间的简单实例
2013/07/20 Javascript
JS替换文本域内的回车示例
2014/02/18 Javascript
js 动态为textbox添加下拉框数据源的方法
2014/04/24 Javascript
angularjs学习笔记之双向数据绑定
2015/09/26 Javascript
Angular设置title信息解决SEO方面存在问题
2016/08/19 Javascript
Vue基于NUXT的SSR详解
2017/10/24 Javascript
js数组方法reduce经典用法代码分享
2018/01/07 Javascript
关于vue3.0中的this.$router.replace({ path: '/'})刷新无效果问题
2020/01/16 Javascript
解决nuxt页面中mounted、created、watch执行两遍的问题
2020/11/05 Javascript
vue3.0中友好使用antdv示例详解
2021/01/05 Vue.js
关于better-scroll插件的无法滑动bug(2021通过插件解决)
2021/03/01 Javascript
[03:18]DOTA2亚洲邀请赛小组赛第一日 RECAP赛事回顾
2015/01/30 DOTA
[06:45]DOTA2-DPC中国联赛 正赛 Magma vs LBZS 选手采访
2021/03/11 DOTA
Python实现的KMeans聚类算法实例分析
2018/12/29 Python
Django的models中on_delete参数详解
2019/07/16 Python
在Python中字符串、列表、元组、字典之间的相互转换
2019/11/15 Python
将labelme格式数据转化为标准的coco数据集格式方式
2020/02/17 Python
HTML5在canvas中绘制复杂形状附效果截图
2014/06/23 HTML / CSS
考博自荐信
2013/10/25 职场文书
三年级小学生评语
2014/04/22 职场文书
英语专业毕业生求职信
2014/05/24 职场文书
服装设计师求职信
2014/06/04 职场文书
教师四风自我剖析材料
2014/09/30 职场文书
个园导游词
2015/02/04 职场文书
中学总务处工作总结
2015/08/12 职场文书
早上好问候语大全
2015/11/10 职场文书
Java中使用Filter过滤器的方法
2021/06/28 Java/Android