Thanks a lot guys !! I solved the problem:
In the lines: >> new_process = process(target=newprocess) >> new_process.start() The target=newprocess is pointing towards a variable, instead of a function. So, appending a () will make it goto that function, thereby changing the global variable : ) Thanks, Nav On 04-Aug-2010, at 11:42 AM, Daniel da Silva wrote: > Your problem lies somewhere in the use of the Process class, not with global > variables. > > If you replace your "p = ..." and "p.start()" lines with a direct call to > self.handle_connection(), your code works as expected. I don't know much > about the multiprocessing module, so I can't really comment on what you're > doing wrong, but I hope this points you in the right direction. > > Sorry I couldn't be of more help, > > Daniel > > > On Tue, Aug 3, 2010 at 9:48 PM, Navkirat Singh <navkir...@gmail.com> wrote: > > On 04-Aug-2010, at 9:46 AM, Daniel da Silva wrote: > >> Please post approximate code that actually works and displays the problem. >> >> On Tue, Aug 3, 2010 at 9:00 PM, Navkirat Singh <navkir...@gmail.com> wrote: >> Hey guys, >> >> I am using a multiprocessing program, where the new process is supposed to >> change a variable in the main class that it branches out from. This is >> somehow not working, following is an approximate code. Would really >> appreciate any insight into this matter: >> >> >> var = {} >> >> class Something(): >> >> def set_var(self): >> global var >> var = somevalue >> >> def get_var(self): >> return var >> >> def newprocess(self): >> self.set_var() >> >> def do_multiprocessing(self): >> while true: >> self.get_var() >> new_process = process(target=newprocess) >> new_process.start() >> >> >> I am really confused here ! >> >> Any help would be awesome : ) >> >> Regards, >> Nav >> >> -- >> http://mail.python.org/mailman/listinfo/python-list >> > > This is a working code, streamlined, but it is where the problem is: > > from multiprocessing import * > > dicts = 0 > print('global ', dicts) > > class WebServer(): > > def set_sessionInfo(self): > global dicts > dicts = dicts + 1 > > def get_sessionInfo(self): > return dicts > > def handle_connection(self): > self.set_sessionInfo() > > def serve_forever(self): > for x in range(10): > p = Process(target=self.handle_connection) > p.start() > print(self.get_sessionInfo()) > > ws = WebServer() > ws.serve_forever() > print(dicts) > > >
-- http://mail.python.org/mailman/listinfo/python-list