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