On 3/26/2011 7:06 AM, Andrea Crotti wrote:
Stefan Behnel<stefan...@behnel.de>  writes:

Not "restarted" in the sense that it gets cleaned up, though. The
above simply passes an explicit value for it that will be used for the
single call. Future calls won't be affected.

Stefan

About this global caching thing I thought, but isn't this a source of
possible HUGE memory leaks?

The original decorator that used one dictionary for possibly caching multiple functions could certainly cause memory problems. It would not disappear until the decorator and all wrapped functions were gone.

I mean, when is the object _cache freed from the memory?
From my understanding until the function name is in the scope that
object will never be freed, is that correct?

You mean 'while the function name...'. And yes, correct, unless one used the trick I posted in response to Stefen:
     fib_iter.__kwdefaults__['_cache'] = [0,1]
The point of this might be to free a cache swollen by a one-time call with a large n, without deleting the function itself. One could then continue with calls using normal-sized ints.

Caching is a time-space tradeoff that might need tuning to a particular application.

--
Terry Jan Reedy

--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to