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

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

什么是装饰器

装饰器的英文是: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 dt


def 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 result
    return wrapper

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

如何使用装饰器

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

效果

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

  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Mike_Leigh

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值