Python如何实现定时器功能

作者:laozhang 时间:2023-04-13 23:19:28 

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)

来源:https://www.py.cn/jishu/jichu/10436.html

标签:Python,定时器
0
投稿

猜你喜欢

  • JavaScript初级教程(第五课续)第1/3页

    2024-04-17 10:10:07
  • Python实现的凯撒密码算法示例

    2022-10-14 08:47:28
  • Python 6种基本变量操作技巧总结

    2023-04-03 21:50:04
  • Git中使用.gitignore忽略文件的推送方式

    2023-03-03 21:53:59
  • js 获取、清空input type="file"的值示例代码

    2024-04-22 13:07:14
  • python数据分析实战指南之异常值处理

    2023-04-19 21:02:18
  • python之mock模块基本使用方法详解

    2022-03-05 03:10:33
  • 在数据库中自动生成编号的实现方法分享

    2011-11-03 16:55:24
  • python如何获取服务器硬件信息

    2023-05-10 18:28:06
  • Windows下MySQL5.6查找my.ini配置文件的方法

    2024-01-22 13:32:38
  • BootStrap给table表格的每一行添加一个按钮事件

    2024-05-11 09:07:33
  • 用Python写一个简易版弹球游戏

    2022-02-14 04:03:55
  • 如何彻底解决python NameError:name '__file__' is not defined

    2023-01-29 03:57:12
  • 如何利用pyinstaller打包Python程序为exe可执行文件

    2023-11-08 08:01:39
  • Python二叉树的镜像转换实现方法示例

    2023-09-28 18:36:35
  • chatGPT使用及注册过程中常见的一些错误解决方法(所有报错汇总)

    2023-03-02 22:27:23
  • HTML在线编辑器任意设置字号大小

    2007-08-29 19:55:00
  • 不得不承认:韩国的 Web 设计很唯美

    2009-05-13 13:26:00
  • MySQL多实例安装开机自启动服务配置过程

    2024-01-14 14:32:17
  • Navigator sendBeacon页面关闭也能发送请求方法示例

    2024-04-22 22:37:44
  • asp之家 网络编程 m.aspxhome.com