当 Python 执行特定操作时,我们有时需要获知该操作花费了多少时间,以便优化程序。简单的方法是使用 Python 的 time 模块,但是通过 with 上下文,可以避免未妥善处理资源的错误,并且使代码更具可读性。下面是完整的攻略,包含两个示例说明:
为什么使用上下文管理器?
当操作完成时,上下文管理器负责清理和释放资源,确保代码更健壮且更可读。上下文管理器由 with 语句控制,比使用 try-finally 更清晰地定义环境清理操作。
计时装饰器示例:
首先定义一个计时器函数:
import time
def timer(func):
def wrapper(*args, **kwargs):
start_time = time.time()
result = func(*args, **kwargs)
end_time = time.time()
print(f"{func.__name__} executed in {end_time - start_time} seconds")
return result
return wrapper
然后将其用作装饰器,以便测量函数执行时间:
@timer
def some_function():
time.sleep(2)
some_function()
这会打印出:
some_function executed in 2.0023839473724365 seconds
上下文管理器示例:
定义一个上下文管理器:
import time
class Timer:
def __init__(self):
self.start_time = None
def __enter__(self):
self.start_time = time.time()
return self
def __exit__(self, exc_type, exc_val, exc_tb):
end_time = time.time()
print(f"Code executed in {end_time - self.start_time} seconds")
然后在 with 语句中使用:
with Timer():
time.sleep(2)
这会打印出:
Code executed in 2.0023834705352783 seconds
这意味着 with 语句退出时,上下文管理器的 exit 方法被调用,时间测量得到了正确的结果。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python 使用with上下文实现计时功能 - Python技术站