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

Reply via email to