一个在python中最简单的统计程序运行时长的装饰器

在调试程序时,经常需要知道程序运行的时长,最长见的方法是在程序开始时加上:

oldtime = time.time()

在程序末尾,加上:

print(time.time() - oldtime)

但这样在程序完成时,就需要将这些语句删除。在网上学习了装饰器的用法,觉得用装饰器可以完美解决这个问题。运行原理可参考:python装饰器详解

代码如下:

import time

# 自定义装饰器函数
def runtime(func):
    '''
    这是装饰器函数,参数 func 是被装饰的函数
    返回程序执行的时间,主要用于调试
    在需要提示的程序上一行写: @runtime'''
    def wrapper(*args, **kw):
        oldtime = time.time()

        # 真正执行的是这行
        func(*args, **kw)

        print(f'程序 {func.__name__} 运行时间:{time.time()-oldtime}秒')
    return wrapper

说明:在需要运行的程序上边,加上 @runtime 就行,程序运行后会显示 函数名称 及其运行时长。

例子:

import time

# 自定义装饰器函数
def runtime(func):
    '''
    这是装饰器函数,参数 func 是被装饰的函数
    返回程序执行的时间,主要用于调试
    在需要提示的程序上一行写: @runtime'''
    def wrapper(*args, **kw):
        oldtime = time.time()

        # 真正执行的是这行
        func(*args, **kw)

        print(f'程序 {func.__name__} 运行时间:{time.time()-oldtime}秒')
    return wrapper

@runtime
def 程序a():
    # 运行n次
    n = 0
    while n < 10000000:
        n += 1

@runtime
def 程序b():
    time.sleep(3)  # 暂停3秒

程序a()
程序b()

运行结果:

但这种方法在调试结束后,仍然需要一行行地删除或注释掉 @runtime 这行代码哦。当然,如果程序不是太大且不太关注程序运行效率,又经常需要在调试状态和运行状态切换的话,可以加一个全局变量开关,标识程序是否在调试状态,在调试状态下装饰器输出内容,其它状态不输出即可。

  • 13
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Python 有多种方式可以记录程序运行时。下面分别介绍三种常见的方法: 1. 使用 time 模块 Python 的 time 模块提供了一个 perf_counter() 函数,可以用来记录程序运行时。这个函数返回一个程序开始或计时器重置后累计的精确时间。下面是一个使用 time 模块记录程序运行时的示例: ```python import time start_time = time.perf_counter() # 记录开始时间 # 在这里放入你的代码 end_time = time.perf_counter() # 记录结束时间 elapsed_time = end_time - start_time # 计算运行时 print(f"程序运行时: {elapsed_time:0.4f} 秒") # 输出运行时 ``` 2. 使用 datetime 模块 Python 的 datetime 模块提供了一个 datetime.now() 函数,可以记录程序运行时。这个函数返回当前系统时间。下面是一个使用 datetime 模块记录程序运行时的示例: ```python import datetime start_time = datetime.datetime.now() # 记录开始时间 # 在这里放入你的代码 end_time = datetime.datetime.now() # 记录结束时间 elapsed_time = end_time - start_time # 计算运行时 print(f"程序运行时: {elapsed_time}") # 输出运行时 ``` 3. 使用 timeit 模块 Python 的 timeit 模块是专门用来计算程序运行时间的模块。这个模块提供了一个 Timer 类,可以用来测量代码的执行时间。下面是一个使用 timeit 模块记录程序运行时的示例: ```python import timeit code_to_test = """ # 在这里放入你的代码 """ elapsed_time = timeit.timeit(code_to_test, number=1000) # 计算运行时 print(f"程序运行时: {elapsed_time:.6f} 秒") # 输出运行时 ``` 这些方法,使用 time 模块的方式最为常见,因为它是 Python 内置模块,使用起来较为方便简单。如果需要更精确的时间测量或者更加高级的计时需求,可以考虑使用 datetime 或 timeit 模块。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

刘庆豪2007

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

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

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

打赏作者

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

抵扣说明:

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

余额充值