加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

使用装饰器记录执行时间

发布时间:2020-12-20 11:48:42 所属栏目:Python 来源:网络整理
导读:在我尝试了一段时间失败之后,我正在寻求这个神奇网站的帮助.现在我的问题是:我想创建一个装饰器,将函数的执行时间(在执行函数期间)写入日志文件,如: @log_time("log.txt",35)def some_function(...): ... return result 和 from functools import wrapsdef
在我尝试了一段时间失败之后,我正在寻求这个神奇网站的帮助.现在我的问题是:我想创建一个装饰器,将函数的执行时间(在执行函数期间)写入日志文件,如:

@log_time("log.txt",35)
def some_function(...):
    ...
    return result

from functools import wraps

def log_time(path_to_logfile,interval):
    ...

所以log.txt看起来像

Time elapsed: 0h 0m 35s
Time elapsed: 0h 1m 10s
Time elapsed: 0h 1m 45s

有任何想法吗?

解决方法

我将为您提供有关为实现此目的必须执行的操作的基本概述.以下是装饰器,它接受两个参数,并执行该函数.缺少的功能表示为注释,将它们添加到:

def log_time(path_to_logfile,interval):
    def log(func):
        # 'wrap' this puppy up if needed 
        def wrapped(*args,**kwargs):
            # start timing
            func(*args,**kwargs)
            # stop timing
            with open(path_to_logfile,'a') as f:
                pass # functionality
        return wrapped
    return log

您现在可以装饰函数,输出将写入path_to_logfile.所以,例如,在这里装饰foo:

@log_time('foo.txt',40)
def foo(i,j):
    print(i,j)

foo(1,2)

将采取foo并执行它.您需要适当地计时并将内容写入您的文件.您应该更多地尝试装饰器并阅读它们,这是Decorators exist at the Python Wiki上的一篇很好的文章.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读