gpt4 book ai didi

python - 特定代码行的类似装饰器的语法

转载 作者:行者123 更新时间:2023-11-28 20:33:11 24 4
gpt4 key购买 nike

链接主题(但不重复):Decorator to time specific lines of the code instead of whole method?

我知道装饰器通常如何用于 Python 函数。

单行代码是否有类似的概念/语法?

例子:用

def measuretime(lineofcode):
start = time.time()
lineofcode()
print time.time() - start

然后

@measuretime
im = Image.open(BytesIO(base64.b64decode(data)))

会被解释为

start = time.time()
im = Image.open(BytesIO(base64.b64decode(data)))
print time.time() - start

注意事项:

  • 我知道这样测量执行时间不是最优的,最好使用 timeit等等,但这只是一个随机示例,用于展示我正在寻找的内容(单行代码的装饰器)

  • 我正在寻找 1 或 2 行代码解决方案(当然还有函数定义)。如果解决方案需要超过 2 行代码(即超过 @measuretime 之类的代码),那么最好放弃并按正常方式执行:

      start = time.time()
    im = Image.open(BytesIO(base64.b64decode(data)))
    print time.time() - start

最佳答案

如果你想在一行代码前后做一些事情,一个context manager将是合适的:

from contextlib import contextmanager
import time

@contextmanager
def measuretime():
start = time.time()
try:
yield
finally:
print(time.time() - start)

with measuretime():
do_stuff()

关于python - 特定代码行的类似装饰器的语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51077539/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com