python实现计时器(装饰器)

1, Python时间装饰器_BurningSilence的博客-CSDN博客_python 时间装饰器

from functools import wraps
import time


# time装饰器
def timer(func):
    @wraps(func)
    def wrap(*args, **kwargs):
        begin_time = time.perf_counter()
        result = func(*args, **kwargs)
        start_time = time.perf_counter()
        print('func:%r args:[%r, %r] took: %2.4f sec' % (func.__name__, args, kwargs, start_time - begin_time))
        return result

    return wrap


@timer
def waste_some_time(num):
    my_list = []
    for i in range(num):
        my_list.append(i)
    return my_list


if __name__ == '__main__':
    arr = waste_some_time(1000)
    print(arr)

2,python 函数执行时间装饰器_Charlie.Cheung的博客-CSDN博客_python 时间装饰器

import time


def timeit(func):
    def wrapper(*args, **kwargs):
        name = func
        for attr in ('__qualname__', '__name__'):
            if hasattr(func, attr):
                name = getattr(func, attr)
                break

        print("Start call: {}".format(name))
        now = time.time()
        result = func(*args, **kwargs)
        using = (time.time() - now) * 1000
        msg = "End call {}, using: {:.1f}ms".format(name, using)
        print(msg)
        return result
    return wrapper


@timeit
def hello_world():
    time.sleep(2)
    print('hello world')

    
if __name__ == '__main__':
    hello_world()

3,python实现计时器(装饰器) - 走看看

import time

#  装饰器run_time,@run_time加在谁头上,谁就是参数fun
def run_time(fun):

    start_time = time.time()
    fun()
    end_time = time.time()

    print("程序运行时间为:{} 秒".format(str(round((end_time - start_time), 1))))
    return end_time - start_time

#  耗时任务task
@run_time
def task():
    time.sleep(3)

4,打印当前时间的装饰器

import time
def func_time(func):
    def inner(*args,**kw):
        now_time = time.localtime()
        print('函数开始运行的时间为:',time.strftime('%Y:%m:%d %H:%M:%S',now_time))
        func(*args,**kw)
    return inner

@func_time
def sum(x,y):
    print(x,y)
sum(4,7)

#运行结果
函数开始运行的时间为:2018:11:23 14:36:59
11

5,函数运行总时间的装饰器

import time

def func_time(func):
    def inner(*args,**kw):
        start_time = time.time()
        func(*args,**kw)
        end_time = time.time()
        print('函数运行时间为:',end_time-start_time,'s')
    return inner

@func_time
def sum(x):
    for i in range(1,x+1):
        for j in range(1,i+1):
            print(j,'*', i, '=',i*j,end='   ')
        print()
sum(9)

1 * 1 = 1   
1 * 2 = 2   2 * 2 = 4   
1 * 3 = 3   2 * 3 = 6   3 * 3 = 9   
1 * 4 = 4   2 * 4 = 8   3 * 4 = 12   4 * 4 = 16   
1 * 5 = 5   2 * 5 = 10   3 * 5 = 15   4 * 5 = 20   5 * 5 = 25   
1 * 6 = 6   2 * 6 = 12   3 * 6 = 18   4 * 6 = 24   5 * 6 = 30   6 * 6 = 36   
1 * 7 = 7   2 * 7 = 14   3 * 7 = 21   4 * 7 = 28   5 * 7 = 35   6 * 7 = 42   7 * 7 = 49   
1 * 8 = 8   2 * 8 = 16   3 * 8 = 24   4 * 8 = 32   5 * 8 = 40   6 * 8 = 48   7 * 8 = 56   8 * 8 = 64   
1 * 9 = 9   2 * 9 = 18   3 * 9 = 27   4 * 9 = 36   5 * 9 = 45   6 * 9 = 54   7 * 9 = 63   8 * 9 = 72   9 * 9 = 81   
函数运行时间为: 0.0009999275207519531 s

6,https://www.jb51.net/article/237300.htm

# 涉及到计时,需要引入time模块
import time
# 定义一个对函数运行耗时统计的计时器,用func作为形参来代替需要统计的函数
def time_master(func):
    def call_func():
        print("计时器开始:函数开始调用:")
        start_time = time.time()
        func()
        end_time = time.time()
        print('计时器结束,函数调用完成')
        return print(f'计时器结果返回:函数调用耗时{end_time-start_time:.2f}')
    return call_func
@time_master
# 即在调用myfunc函数时,不是直接调用myfunc
# 而是将myfunc函数作为一个参数放入到@的装饰器中,然后去调用装饰器
def myfunc():
    time.sleep(2)
    print('myfunc函数运行')
    time.sleep(4)
    print('myfunc函数运行结束')
myfunc()  # 调用myfunc

以上都是抄写与整理,学习中...

  • 2
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Python计时装饰器是一种用于测量函数执行时间装饰器。它可以帮助我们方便地计算函数的运行时间,并在函数执行前后进行时间统计。对于给定的函数,我们可以使用不同的装饰器实现计时功能。以下是三个示例装饰器实现方式: 1. 引用中的装饰器`run_time`可以用于计算函数的运行时间。该装饰器使用了`time`模块来获取函数开始和结束的时间,并计算出函数的运行时间装饰器通过将被装饰的函数作为参数传递给`run_time`函数来使用。例如,我们可以在需要计时的函数上方添加`@run_time`装饰器。 2. 引用中的装饰器`timer`也可以用于计算函数的运行时间。该装饰器使用了`time.perf_counter()`来获取函数开始和结束的时间,并计算出函数的运行时间装饰器通过将被装饰的函数作为参数传递给`timer`函数来使用。例如,我们可以在需要计时的函数上方添加`@timer`装饰器。 3. 引用中的装饰器`timeit`同样可以用于计算函数的运行时间。该装饰器使用了`time`模块来获取函数开始和结束的时间,并计算出函数的运行时间装饰器通过将被装饰的函数作为参数传递给`timeit`函数来使用。例如,我们可以在需要计时的函数上方添加`@timeit`装饰器。 以上是三个常见的Python计时装饰器实现方式,它们都可以帮助我们方便地计算函数的运行时间。具体选择哪个装饰器取决于个人的需求和偏好。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [python实现计时器装饰器)](https://blog.csdn.net/debrnr/article/details/126170880)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

老扬

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

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

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

打赏作者

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

抵扣说明:

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

余额充值