Agreed. A possible solution is that if given weakref=True and a non-weakreffable key, an exception will be raised when the function attempts to save it in cache.
Paul, I'll see if I can give an example use case tomorrow. On Thu, Oct 15, 2020, 21:38 Irit Katriel <[email protected]> wrote: > 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 <[email protected]> wrote: > > > Hi everyone, > > For many years, I've used a `cache` decorator that I built > <https://github.com/cool-RR/python_toolbox/blob/master/python_toolbox/caching/decorators.py#L36> > 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 -- [email protected] > To unsubscribe send an email to [email protected] > https://mail.python.org/mailman3/lists/python-ideas.python.org/ > Message archived at > https://mail.python.org/archives/list/[email protected]/message/Q6DT72QLFRE23Z7DT3B6KYKQEOC4R6KO/ > Code of Conduct: http://python.org/psf/codeofconduct/ > >
_______________________________________________ Python-ideas mailing list -- [email protected] To unsubscribe send an email to [email protected] https://mail.python.org/mailman3/lists/python-ideas.python.org/ Message archived at https://mail.python.org/archives/list/[email protected]/message/DPB6GTIWPIPHZFVC43BITMDA23DTMYO3/ Code of Conduct: http://python.org/psf/codeofconduct/
