: ( False alarm, the earlier solution breaks multiprocessing. Whats happening here is the child needs to change a variable in the parent process, So I think I am looking at shared memory (maybe). Any suggestions?
Regards, Nav On 04-Aug-2010, at 12:41 PM, Navkirat Singh wrote: > 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