python增加一个循环运行的装饰器
在平时编程时, 经常会遇到循环运行一个函数的情况, 我们可以编写一个装饰器来简化这个过程, 实现代码如下:
def LoopRun(duration:float=60,interval:float=1,remainder:float=3)->callable:
'''
支持长期运行的装饰器函数
duration: 持续时长, 单位秒
interval: 每次循环等待时长
remainder: 富余出来的时间, 表示多等待的时间
示例:
@LoopRun(10,0.1) # 运行10s, 每次运行间隔0.1s
def Abc():print('abc')
Abc()
'''
def decorator(func):
def wrapper(*args, **kwargs):
start_time = time.time() # 获取当前时间
while True:
result = func(*args, **kwargs)
time.sleep(interval) # 等待一段时间
current_time = time.time() # 获取当前时间
# 判断是否达到停止条件
if current_time - start_time >= duration+remainder: return result
return wrapper
return decorator
btw, 为什么文字少不能发布随笔? 代码不算吗?