On Sat, 26 Mar 2011 12:06:46 +0100, Andrea Crotti wrote: > About this global caching thing I thought, but isn't this a source of > possible HUGE memory leaks?
Hypothetically, but probably not that huge. And I wouldn't call it a *leak* as such, since you can access the memory and recover it if you want to. The cache given is potentially unbounded in size, but in practical terms, it's unlikely to get that big. Say you have a few million key:value pairs in a dict: >>> d = {} >>> for i in range(3000000): ... d[i] = 2**100 + i ... >>> sys.getsizeof(d) 100663432 >>> sum(sys.getsizeof(k)+sys.getsizeof(v) for k,v in d.items()) 125934462 That's of the order of 200 MB of memory -- not that much for today's systems. I've had people email me .doc files that big *wink* But of course, if you want a more sophisticated caching system, you can build one. But this will trade off memory for time: the cache will be slower, there will be more misses, but you won't use as much memory. > I mean, when is the object _cache freed from the memory? When the function is freed, which will happen at program exit, or if you explicitly delete the function. -- Steven -- http://mail.python.org/mailman/listinfo/python-list