装饰器给Python函数调用增加了多少开销
问题内容:
我一直在为我的Pylon应用程序使用定时装饰器,以提供特定功能的实时定时信息。我通过创建装饰器并将其简单地附加到我想定时的控制器中的任何功能上来完成了此任务。
但是,已经指出,装饰器可能会给调用增加大量开销,并且它们的运行速度比未修饰的函数慢2-3倍。
首先,我希望执行修饰后的函数比未修饰的函数花费更短的时间,但是与SQL插入调用相比,我希望开销在千分之几秒之内并且可以忽略不计。装饰器本身使用time.time()和一些非常简单的聚合来进行简单的时序计算。
装饰器会增加系统的开销吗?我找不到任何可以支持的内容。
问题答案:
使用装饰器增加的开销应该只是一个额外的函数调用。
装饰者所做的工作不是开销的一部分,因为您的替代方法是将等效代码添加到装饰对象中。
因此,装饰函数的运行时间可能是原来的两倍,这是因为装饰器正在做一些重要的工作,与未装饰的函数花费的时间大致相同。