ドキュメントによると、もう1つの側面は次のとおりです。
maxsize が None に設定されている場合、LRU 機能は無効になり、キャッシュは際限なく大きくなる可能性があります。LRU 機能は、maxsize が 2 の累乗の場合に最適に機能します。
ドキュメントの例
import functools
import urllib
import requests
@functools.lru_cache(maxsize=32)
def get_pep(num):
'Retrieve text of a Python Enhancement Proposal'
resource = 'http://www.python.org/dev/peps/pep-%04d/' % num
try:
with urllib.request.urlopen(resource) as s:
return s.read()
except urllib.error.HTTPError:
return 'Not Found'
for n in 8, 290, 308, 320, 8, 218, 320, 279, 289, 320, 9991:
pep = get_pep(n)
print(n, len(pep))
print(get_pep.cache_info())
出力
8 106439
290 59766
308 56972
320 49551
8 106439
218 46795
320 49551
279 48553
289 50882
320 49551
9991 9
CacheInfo(hits=3, misses=8, maxsize=32, currsize=8)