We have a couple of weak caches In our system, so I see the use case.

I don’t like the idea of silently reverting to a strong ref though. I’ve had bad experiences with systems that try to be too helpful in this manner. It seems like a good idea until it becomes a big problem, and then you have interesting debates about who’s fault it is. 

Irit

On 15 Oct 2020, at 18:53, Ram Rachum <ram@rachum.com> wrote:


Hi everyone,

For many years, I've used a `cache` decorator that I built for caching Python functions. Then `functools.lru_cache` was implemented, which is much more standard. However, as far as I know, it holds normal references to its keys, rather than weak references. This means that it can cause memory leaks when it's storing items that don't have any references elsewhere. This often makes me reluctant to use it. 

What do you think about supporting weakrefs in for keys lru_cache?

If I remember correctly, the main difficulty was that not all keys are of a type that can be weakreffed. If I remember correctly again, I've solved this by including logic that attempts a weakref when possible, and degrades to a strong ref. What do you think about that? 


Thanks,
Ram.
_______________________________________________
Python-ideas mailing list -- python-ideas@python.org
To unsubscribe send an email to python-ideas-leave@python.org
https://mail.python.org/mailman3/lists/python-ideas.python.org/
Message archived at https://mail.python.org/archives/list/python-ideas@python.org/message/Q6DT72QLFRE23Z7DT3B6KYKQEOC4R6KO/
Code of Conduct: http://python.org/psf/codeofconduct/