On 22/02/07, Rory Campbell-Lange ([EMAIL PROTECTED]) wrote:

> In essence we use class variables as follows:
> 
>     class Part (object):
>         totalgia = 0
>         def __init__(self, gia):
>             self.gia = gia  # gross internal area
>             self.giaratio = 0
>             Part.totalgia += self.gia
>         def addavgbm(self):
>             self.giaratio = float(self.gia)/float(Part.totalgia)
>         def __repr__(self):
>             return "gia: %0.1f giaratio: %0.2f" % (self.gia, self.giaratio)
> 
>     if __name__ == '__main__':
>         p1 = Part(20)
>         p2 = Part(30)
>         for p in p1, p2:
>             p.addavgbm()
>             print p
> 
> totalgia keeps incrementing when this code is used under mod_python.
> On 22/02/07, Rory Campbell-Lange ([EMAIL PROTECTED]) wrote:

On 22/02/07, Piet van Oostrum ([EMAIL PROTECTED]) wrote:
> >>>>> Rory Campbell-Lange <[EMAIL PROTECTED]> (RC) wrote:
> >RC> totalgia keeps incrementing when this code is used under mod_python.
> 
> And also when used outside of mod_python. It is because it is a class level
> variable. In fact I think under certain circumstances in mod_python it will
> not do that because different requests can run in different Apache
> processes (on Linux, Unix, Mac OS X etc.). So it this desired behaviour or
> not? Your post isn't clear about that. And if it isn't what is the desired
> behaviour?
> 
> And you certainly should do something about the concurrent access. 

It is not desirable for the class variable to keep incrementing outside
of invocations of '__main__', as is the case when it is loaded under
mod_python under apache2 on linux.

I would be grateful for pointers on dealing with concurrent access.

Regards
Rory


-- 
Rory Campbell-Lange 
<[EMAIL PROTECTED]>
<www.campbell-lange.net>
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to