我们在编程的过程中经常会遇到一个函数被重复调用的可能。而这个函数如果运行速度慢的话,会影响我们整体的速率。而@functools.lru_cache()装饰器可以利用缓存机制来保证我们的函数只被调用一次。因为我们使用了装饰器后,函数传入相同参数时的返回值会被存入缓存中,以便于下次调用直接获取,而不用函数重新再被调用一次。同时缓存也不会一直增长。当不用的时候会自己释放。
下面我们用文件读取的实例来演示一下@functools.lru_cache()装饰器的神奇之处
import functools
@functools.lru_cache()
def file_read():
with open(r'D:\pythonProject\mianshi\test.txt', 'r', encoding='utf-8') as f:
print("文件读取中。。。。。")
data = f.read()
return data
def code1():
print("第一次调用读取文件")
data = file_read()
print(f'第一次读取结果:{data}')
def code2():
print("第二次调用读取文件")
data = file_read()
print(f'第二次读取结果:{data}')
if __name__ == '__main__':
code1()
code2()
返回的结果为: