bpo-44310: Note that lru_cache keep references to both arguments and results (GH-26715) (GH-26716)

This commit is contained in:
Miss Islington (bot) 2021-06-14 06:43:48 -07:00 committed by GitHub
parent 2b57ad3f53
commit 809c3faa03
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 9 additions and 6 deletions

View File

@ -154,15 +154,16 @@ The :mod:`functools` module defines the following functions:
@lru_cache
def count_vowels(sentence):
sentence = sentence.casefold()
return sum(sentence.count(vowel) for vowel in 'aeiou')
return sum(sentence.count(vowel) for vowel in 'AEIOUaeiou')
If *maxsize* is set to ``None``, the LRU feature is disabled and the cache can
grow without bound.
If *typed* is set to true, function arguments of different types will be
cached separately. For example, ``f(3)`` and ``f(3.0)`` will be treated
as distinct calls with distinct results.
cached separately. For example, ``f(3)`` and ``f(3.0)`` will always be
treated as distinct calls with distinct results. If *typed* is false,
the implementation will usually but not always regard them as equivalent
calls and only cache a single result.
The wrapped function is instrumented with a :func:`cache_parameters`
function that returns a new :class:`dict` showing the values for *maxsize*
@ -172,8 +173,7 @@ The :mod:`functools` module defines the following functions:
To help measure the effectiveness of the cache and tune the *maxsize*
parameter, the wrapped function is instrumented with a :func:`cache_info`
function that returns a :term:`named tuple` showing *hits*, *misses*,
*maxsize* and *currsize*. In a multi-threaded environment, the hits
and misses are approximate.
*maxsize* and *currsize*.
The decorator also provides a :func:`cache_clear` function for clearing or
invalidating the cache.
@ -182,6 +182,9 @@ The :mod:`functools` module defines the following functions:
:attr:`__wrapped__` attribute. This is useful for introspection, for
bypassing the cache, or for rewrapping the function with a different cache.
The cache keeps references to the arguments and return values until they age
out of the cache or until the cache is cleared.
An `LRU (least recently used) cache
<https://en.wikipedia.org/wiki/Cache_replacement_policies#Least_recently_used_(LRU)>`_
works best when the most recent calls are the best predictors of upcoming