Global variables problem

Navkirat Singh navkirats at gmail.com
Wed Aug 4 03:11:48 EDT 2010


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 <navkirats at 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 <navkirats at 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)
> 
> 
> 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-list/attachments/20100804/e583ac66/attachment-0001.html>


More information about the Python-list mailing list