mirror of https://github.com/python/cpython
Remove dubious suggestion (GH-26789)
Remove the weakref example. If a new instance is created and the same arguments are passes, it raises a ReferenceError.
This commit is contained in:
parent
83c9dad8da
commit
e5c7ee1156
|
@ -1852,14 +1852,6 @@ bounded by the specified *maxsize*. The disadvantage is that instances
|
|||
are kept alive until they age out of the cache or until the cache is
|
||||
cleared.
|
||||
|
||||
To avoid keeping an instance alive, it can be wrapped a weak reference
|
||||
proxy. That allows an instance to be freed prior aging out of the LRU
|
||||
cache. That said, the weak reference technique is rarely needed. It is
|
||||
only helpful when the instances hold large amounts of data and the
|
||||
normal aging-out process isn't fast enough. And even though the
|
||||
instance is released early, the cache still keeps references to the
|
||||
other method arguments and to the result of the method call.
|
||||
|
||||
This example shows the various techniques::
|
||||
|
||||
class Weather:
|
||||
|
@ -1884,16 +1876,6 @@ This example shows the various techniques::
|
|||
"Rainfall on a given date"
|
||||
# Depends on the station_id, date, and units.
|
||||
|
||||
def climate(self, category='average_temperature'):
|
||||
"List of daily average temperatures for a full year"
|
||||
return self._climate(weakref.proxy(self), category)
|
||||
|
||||
@staticmethod
|
||||
@lru_cache(maxsize=10)
|
||||
def _climate(self_proxy, category):
|
||||
# Depends on a weak reference to the instance
|
||||
# and on the category parameter.
|
||||
|
||||
The above example assumes that the *station_id* never changes. If the
|
||||
relevant instance attributes are mutable, the *cached_property* approach
|
||||
can't be made to work because it cannot detect changes to the
|
||||
|
|
Loading…
Reference in New Issue