Global variables problem

Daniel da Silva ddasilva at umd.edu
Wed Aug 4 02:12:22 EDT 2010


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/20100803/dd1f6f00/attachment-0001.html>


More information about the Python-list mailing list