使用python3.7中的@lru_cache(maxsize=None)
缓存与简单地将其存储在实例中的dict
中有什么性能差异吗?你知道吗
建议采用哪种方法?你知道吗
示例代码
from functools import lru_cache
import time
class Db:
@classmethod
def get_animal(cls, name):
print(f'Querying database for {name}...')
time.sleep(3) # simulate expensive DB call
return {'name': name, 'data': hash(name)}
class Zoo:
animals = {}
def get_animal(self, name):
if name not in self.animals:
self.animals[name] = Db.get_animal(name)
return self.animals[name]
@lru_cache(maxsize=None)
def get_animal_alt(self, name):
return Db.get_animal(name)
zoo = Zoo()
print(zoo.get_animal('dragon'))
print(zoo.get_animal('dragon'))
print(zoo.get_animal_alt('lion'))
print(zoo.get_animal_alt('lion'))
输出
Querying database for dragon...
{'name': 'dragon', 'data': 6700266117116448468}
{'name': 'dragon', 'data': 6700266117116448468}
Querying database for lion...
{'name': 'lion', 'data': 1221476345714202007}
{'name': 'lion', 'data': 1221476345714202007}
目前没有回答
相关问题 更多 >
编程相关推荐