Python中threading.Timer()定时器实现定时任务

timer最基本理解就是定时器,可以启动多个定时任务,这些定时器任务是异步执行,所以不存在等待顺序执行问题。

Timer方法说明
Timer(interval, function, args=None, kwargs=None)创建定时器
cancel()取消定时器
start()使用线程方式执行
join(self, timeout=None)等待线程执行结束

 

1、单线程执行

示例代码:

from datetime import datetime
from threading import Timer


def task():
  now = datetime.now()
  ts = now.strftime("%Y-%m-%d %H:%M:%S")
  print(ts)


def func():
  task()
  t = Timer(3, func)
  t.start()


func()

运行结果:

优缺点:可以实现异步任务,是非阻塞的,但当运行次数过多时,会出现报错:Pyinstallermaximum recursion depth exceeded Error Resolution 达到最大递归深度,然后想到的是修改最大递归深度,

sys.setrecursionlimit(100000000)

但是运行到达到最大CPU时,python会直接销毁程序。

 

2、多线程执行

示例代码:

from datetime import datetime
from threading import Timer
import threading


def task():
  now = datetime.now()
  ts = now.strftime("%Y-%m-%d %H:%M:%S")
  print(ts)


def func():
  task()
  t = Timer(3, func)
  t.start()


if __name__ == '__main__':
  for i in range(3):
      thread = threading.Thread(None, func)
      thread.start()

运行结果:

关于Python中threading.Timer()定时器实现定时任务的文章就介绍至此,更多相关threading.Timer()定时器内容请搜索编程宝库以前的文章,希望以后支持编程宝库

 一、_func 单下划线开头 --口头私有变量1.1、在模块中使用单下划线开头在Python中,通过单下划线_来实现模块级别的私有化,变量除外。一般约定以单下划线开头的函数 ...