当前位置: 首页 > news >正文

教你搞一个比较简单的计时和进度条装饰器

教你搞一个比较简单的计时和进度条装饰器

  • 什么是装饰器
    • 为啥要用装饰器呢?
    • 上代码!
    • 如何使用装饰器
    • 效果

什么是装饰器

装饰器的英文是:Decorator。装修的英文是:Decoration。顾名思义就是我们要用装饰器在函数func()上搞点儿事儿,哈哈哈。这个就是一个套你的函数func()并且实现一些功能的函数。譬如我们今天要分享的计时器或进度条。

为啥要用装饰器呢?

为了美化代码,和避免没必要的反复书写。每次我们有个for loop都要搞一遍tqdm么?每次我们想来测试一个函数func()的运行时间是多久,都要来一遍 time_start - time_end么?很显然,有了装饰器这玩意儿,会省去我们很多的麻烦。

上代码!

import time
from tqdm import tqdm
from functools imoprt wraps
from datetime import datetime as dtdef timer_pbar(func):@wraps(func)def wrapper(*args, **kwargs):print(f"{dt.now().strftime('%H:%M:%S')}")   # 显示当前时间start = time.time()   # 开始计时with tqdm(total=20,   # 我是假设了20秒bar_format='{l_bar}{bar:10}{r_bar}{bar:-10b}',desc=f"Processing {func.__name__!r}",position=0,colour='#32CD32',   # limegreen HEX code) as pbar:for i in range(20):time.sleep(1)pbar.update(1)   # 每过一秒我加一块进度条result = func(*args, **kwargs)end = time.time()   # 结束计时print(f"运行时间{func.__name__!r}: {end - start:.3f}秒")   # 返回运行消耗的时间return resultreturn wrapper

这样我们的代码就编译完成了,那我们如何使用呢?其实很简单,就在你的函数前面加一行@装饰器就行了。

如何使用装饰器

如何使用装饰器
ml是我自己的写的一个python脚本,里面有很多7788的东西和功能,其中就有这个装饰器。我可以直接导入就可以调用了。或者你也可以把装饰器写在任何你的py或者ipynb文件的头部,这样也可以直接调用使用。我是建议大家创建一个自己的库,这样使用起来也方便,能够提高效率。感兴趣的朋友可以阅读我这片关于自己设计一个库的Blog。

效果

用了装饰器的输出效果
看起来还是挺靠谱的哈?欢迎大家常来看我的Blog!有什么需求和疑问请留言联系我!

http://www.lryc.cn/news/360092.html

相关文章:

  • 跑马灯的两种实现方式
  • OpenAI 的 GPT-4o 是目前最先进的人工智能模型!如何在工作或日常生活中高效利用它?
  • 安卓ANR检测、分析、优化面面谈
  • “手撕”链表的九道OJ习题
  • 解决 Git commit 或 Git merge 跑到 VIM 里面去了
  • 营造科技展厅主题氛围,多媒体应用有哪些新策略?
  • 【UML用户指南】-04-从代码到UML的关键抽象
  • (2024,LoRA,全量微调,低秩,强正则化,缓解遗忘,多样性)LoRA 学习更少,遗忘更少
  • 【Java】面向对象的三大特征:封装、继承、多态
  • 请问Java8进阶水平中,常用的设计模式有哪些?
  • 力扣--最大子数组和
  • C# 中的字符与字符串
  • TPM之VMK密封
  • Fastjson 反序列化漏洞[1.2.24-rce]
  • 【面试宝藏】Go基础面试题其一
  • python如何安装pyqt4
  • 调用上传文件接口出现格式错误
  • leetcode148. 排序链表,归并法,分治的集大成之作
  • 一维时间序列信号的小波模极大值分解与重建(matlab R2018A)
  • 五分钟“手撕”栈
  • MAC也能玩转3A大作 Crossover使用指南 crossover运行战地5
  • docker私有镜像仓库的搭建及认证
  • simCSE句子向量表示(1)-使用transformers API
  • 网络运维的重要性
  • 还不会使用多线程优化代码执行效率?codefun教你在业务场景中使用CompletableFuture进行优化!
  • 数据结构-堆(带图)详解
  • React Native 之 react-native-share(分享)库 (二十三)
  • JCR一区级 | Matlab实现TCN-BiGRU-MATT时间卷积双向门控循环单元多特征分类预测
  • 游戏心理学Day01
  • 错误模块路径: ...\v4.0.30319\clr.dll,v4.0.30319 .NET 运行时中出现内部错误,进程终止,退出代码为 80131506。