在我尝试了一段时间没有成功之后,我正在这个神奇的网站寻求帮助。现在我的问题是:我想创建一个decorator,它将函数的执行时间(在函数执行期间)写入日志文件,如:
@log_time("log.txt", 35)
def some_function(...):
...
return result
以及
^{pr2}$
所以log.txt
看起来像
Time elapsed: 0h 0m 35s
Time elapsed: 0h 1m 10s
Time elapsed: 0h 1m 45s
有什么想法吗?在
Tags:
很快就组装好了,但在测试中使用了@timeit对几个函数进行了测试。在
来源:https://www.andreas-jung.com/contents/a-python-decorator-for-measuring-the-execution-time-of-methods,https://automatetheboringstuff.com/chapter10/
编辑:我发现Python附带了一个非常好的日志模块;为什么要重新发明轮子?在
我将给你一个基本的概述,你必须做什么来完成这一点。下面是一个接受两个参数并执行函数的decorator。缺少的功能以注释形式显示,请将其添加到:
现在可以修饰函数,输出将用
^{pr2}$path_to_logfile
编写。例如,在这里装饰foo
:将接受foo并执行它。您需要
time
并将内容写入文件。您应该更多地尝试使用装饰器,并阅读它们,一篇关于Decorators exist at the Python Wiki的好文章。在好吧,我最后用线解决了一些问题。谢谢你的建议!在
一个缺点可能是您无法轻松地检索函数的返回值(至少我还没有找到它)。在
EDIT1:删除了一个不必要的变量,并为日志写入添加了一个很好的格式(参见this)
EDIT2:即使其他用户拒绝了他的编辑,我还是希望包含一个来自Piotr Dabkowski的版本,因为它使用返回值:
^{pr2}$相关问题 更多 >
编程相关推荐