As part of the Python 3 cleanup in Django there are a fair few uses of 
@functools.lru_cache on functions that take no arguments. A lru_cache isn't 
strictly needed here, but it's convenient to just cache the result. Some 
examples are here: https://github.com/django/django/pull/8825/files

I did some profiling and I found that using `@lru_cache(maxsize=None)` on such 
functions is twice as fast as a standard `@lru_cache()`, apparently because 
with a `maxsize` the lru_cache code requires a lock acquisition and a fair bit 
more state to track.

Am I right in thinking that using `maxsize=None` is best for functions that 
accept no arguments? Should we even be using a `lru_cache` in such situations, 
or write our own simple cache decorator instead?
-- 
https://mail.python.org/mailman/listinfo/python-list

Reply via email to