On Tue, 12 Jan 2021 at 17:04, Steven D'Aprano <st...@pearwood.info> wrote:

> My use-case is debugging functions that are using an LRU cache,
> specifically complex recursive functions. I have some functions where:
>
>     f(N)
>
> ends up calling itself many times, but not in any obvious pattern:
>
>     f(N-1), f(N-2), f(N-5), f(N-7), f(N-12), f(N-15), f(N-22), ...
>
> for example. So each call to f() could make dozens of recursive calls,
> if N is big enough, and there are gaps in the calls.
>
> I was having trouble with the function, and couldn't tell if the right
> arguments where going into the cache. What I wanted to do was peek at
> the cache and see which keys were ending up in the cache and compare
> that to what I expected.
>
> I did end up get the function working, but I think it would have been
> much easier if I could have seen what was inside the cache and how the
> cache was changing from one call to the next.
>
> So this is why I don't care about performance (within reason). My use
> case is interactive debugging.

For debugging, could you not temporarily write your own brain-dead simple cache?

CACHE = {}
def f(n):
    if n not in CACHE:
        calculate result
        CACHE[n] = result
    return CACHE[n]

(make a decorator, if you feel like).

You can then inspect and instrument as much as you like, and once
you've got things working, replace the hand-written cache with the
stdlib one.

Personally, I don't use lru_cache enough to really have an opinion on
this. My first reaction was "that would be neat", but a quick look at
the code (the Python version, I didn't go near the C version) and
Serhiy's comments made me think that "it's neat" isn't enough
justification for me, at least. In practice, I'd just do as I
described above, if I needed to.

Paul
_______________________________________________
Python-ideas mailing list -- python-ideas@python.org
To unsubscribe send an email to python-ideas-le...@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/JAU7CDKTU2HUVN33JI7Y56QXVD7C76K5/
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to