1、单次定时器

定时器是软件里常用的模块,用于定期执行任务,单次执行定时器

#定时器执行的函数
def func():
    print('执行函数时间:{}'.format(standar_time()))
    time.sleep(3)
    print('休息三秒时间:{}'.format(standar_time()))
    print('hello,word!')
    print('函数结束时间:{}'.format(standar_time()))

#计算并打印出当前时间的标准格式
def standar_time():
    timestamp1 = time.time()
    cur_time = datetime.fromtimestamp(timestamp1)
    return cur_time

#定时器的延时时间,2s
delay = 2
#创建定时器对象
timer = threading.Timer(delay,func)
#启动定时器
timer.start()
print('定时启动时间:{}'.format(standar_time()))

运行后输出结果:

定时启动时间:2024-04-19 09:21:39.460646
执行函数时间:2024-04-19 09:21:41.472267
休息三秒时间:2024-04-19 09:21:44.486207
hello,word!
函数结束时间:2024-04-19 09:21:44.486207

从输出时间来看,定时器启动是39秒,执行func函数是41秒,中间是定时器设置的启动延迟时间delay为2秒。上面的两行代码实现一次定时,即start()执行后,过delay秒执行timerHandler函数。

2、循环定时器

循环重复执行定时器,通常是在软件中最常用的方式

#定时器执行的函数
def func():
    time.sleep(3)
    print('hello,word!')

#计算并打印出当前时间的标准格式
def standar_time():
    timestamp1 = time.time()
    cur_time = datetime.fromtimestamp(timestamp1)
    return cur_time

def Timers(delay):
    #要执行的代码体
    func()
    print('fun函数执行时间:{}'.format(standar_time()))
    #代码体按顺序执行后,重新启动一个定时器,调用函数自身
    timer = threading.Timer(delay,Timers,args=[delay])
    timer.start()
    
#单独创建一个定时器,用于首次执行
delay = 1
timer = threading.Timer(delay,Timers,args=[delay])
timer.start()

输出内容:

hello,word!
fun函数执行时间:2024-04-19 09:33:03.278519
hello,word!
fun函数执行时间:2024-04-19 09:33:07.296772
hello,word!
fun函数执行时间:2024-04-19 09:33:11.318020
hello,word!
fun函数执行时间:2024-04-19 09:33:15.335278
hello,word!
fun函数执行时间:2024-04-19 09:33:19.346552
hello,word!
fun函数执行时间:2024-04-19 09:33:23.366803
........

两个执行完成func函数,每次间隔4秒,1秒用于定时器启动后延迟时间的设定,3秒用于执行func整个函数所需时间。将定时器每次需要重复循环执行的代码块放置到下一次定时器启动的上面,就完成了定时循环重复执行的效果。

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐