首页 > 编程语言 >python增加一个循环运行的装饰器

python增加一个循环运行的装饰器

时间:2023-08-21 12:11:49浏览次数:23  
标签:return python float 循环 time duration remainder 装饰 def

在平时编程时, 经常会遇到循环运行一个函数的情况, 我们可以编写一个装饰器来简化这个过程, 实现代码如下:

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, 为什么文字少不能发布随笔? 代码不算吗?

标签:return,python,float,循环,time,duration,remainder,装饰,def
From: https://www.cnblogs.com/huzhongqiang/p/17645673.html

相关文章

  • Python matplotlib.axes对象常用属性(绘图方式、坐标轴、刻度等)
    目录一、绘图方式1.1基本绘图方式1.2跨度、频谱、填充、2D数组的绘图方式Axes类可以设置图片(或子图)中相关属性:绘图数据、坐标轴刻度/标签、标题、图例等。它是Python操作绘图的主要接口。Matplotlib定义了一个axes类(轴域类),在一个给定的画布(figure)中可以包含多个axes对象,但是同......
  • 8-21|Python使用管道如何执行此删除目录
    要在Python中使用管道执行此命令,你可以利用`subprocess`模块。下面是一个示例,展示如何在Python中执行这个命令:```pythonimportsubprocessdirectory="path_to_directory"#构建命令cmd=f'cd{directory}&&del/f/s/q*.*&&for/d%xin(*)dormdir/s/q"%x&quo......
  • 解决python错误 UnicodeDecodeError: 'gb2312' codec can't decode byte 0x8b in posi
    报错的代码:url='http://kaijiang.500.com/shtml/ssq/19001.shtml'page=urllib.request.urlopen(url)content=page.read().decode('gb2312')报这个错的原因是获取到的网页内容是经过压缩了的,打开url可以看到请求headAccept-Encoding:gzip,deflate一种方式是请求时把......
  • python+allure生成测试报告
    #一、allure安装##下载地址:CentralRepository:io/qameta/allure/allure-commandline(apache.org)##下载需要安装的版本,这里我选择的是2.9的版本##图片##下载解压完成后,将bin文件夹所在的目录放入环境变量中,同时需要安装JDK。##完成后,命令行pipinstallallure-pytest安装......
  • Python程序员Visual Studio Code指南3 编辑代码
    3编辑代码VisualStudioCode提供了许多适用于所有编程语言的标准编辑功能。快速修复代码补全定义声明格式化语法重构代码片段这些内置的编辑功能减少了编辑代码所需的手动任务和键入次数,从而节省了时间。Python扩展扩展了代码编辑功能。有了Python扩展,导入库只需极......
  • Python实现Windows下的视频壁纸
    importsysimportwin32guiimportsubprocessimporttimedefpretreatmentHandle():hwnd=win32gui.FindWindow("Progman","ProgramManager")workerW1=Nonewhile1:workerW1=win32gui.FindWindowEx(None,workerW1......
  • shell脚本之语句(条件、循环)
    条件语句1、测试使用[]时要使用空格,注意格式 格式1:test条件表达式 格式2:[条件表达式]#注意空格 注意[]空格,否则会失败 测试是否成功使用$?返回值来判断 [操作符文件或目录] helptest ​ 操作符: -d:测试是否为目录(Directory) -e:测试目录或文件是否......
  • 我也来扒一扒python的内存回收机制!
    python的内存回收是面试中经常会问到一个问题,今天我来给大家深度剖析下python的内存回收和缓存机制 1、引用计数器我们知道,python是通过引用计数器来做内存回收的,下面我们来重点讲下引用计数器提到引用计数器,我们需要先讲下python中的环状双向链表refchain。1.1双向链表ref......
  • python学习日记 2023年8月20日
    fromPILimportImage##pipinstallpillowimportosim=Image.open('./1.jpg')w,h=im.sizeimage_row=3image_column=5names=os.listdir('./img_f')new_img=Image.new('RGB',(image_column*w,image_row*h))foryinra......
  • devops之Python编程-类的基础架构
    Python中,可以通过关键字class来定义一个类。类是一种自定义数据类型,它可以包含属性(变量)和方法(函数)。下面是一个示例:classMyClass:def__init__(self,name):self.name=namedefsay_hello(self):print("Hello,"+self.name+"!")在上面的......