Also, note that your 'results' dict will only persist for the duration of a 
single request. Each request is handled by a new thread (from a thread 
pool).

Anthony

On Saturday, September 17, 2011 11:06:14 AM UTC-4, Massimo Di Pierro wrote:
>
> On Sep 17, 6:31 am, Chris Rowson <christop...@gmail.com> wrote: 
> > Hi folks, 
> > 
> > I'm trying to get my head around what happens to data stored in memory 
> when 
> > it isn't needed anymore. 
> > 
> > Let me give you an example. Let's say I create a function which returns a 
>
> > dict called 'results' populated with data from an external source each 
> time 
> > a user registers (for instance let's say it has data returned from 
> geocoding 
> > the users postcode and providing info about the area). 
> > 
> > So the 'results' dict holds that data, it is used, and then what? Is the 
> > memory automatically freed up again when we finish with the data or does 
> it 
> > hang around in memory? 
>
> Yes. Python uses reference counting. Every variable is a pointer to a 
> memory location. It keeps tracks of how many pointers point to the 
> same location. 
>
> a = A() # one pointer 
> b = a # two pointers 
> c = a # three pointers 
>
> when you delete one the counter is decreased 
>
> b = 4 # now two variables (a,c) point to A() 
>
> when the counter is zero the object is freed. 
>
> This works great UNLESS the objects have circular references (a.x=a) 
> AND the object has a destructor (A.__del__). As long a you do not use 
> destructors (who needs them?) everything works great. 
>
>
>
>
>

Reply via email to