Navkirat Singh 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 <mailto: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)



"As mentioned above, when doing concurrent programming it is usually best to avoid using shared state as far as possible. This is particularly true when using multiple processes.

However, if you really do need to use some shared data then multiprocessing provides a couple of ways of doing so."

source :

http://docs.python.org/library/multiprocessing.html


Read it, everything is explained with examples, including how to properly solve your problem. "When using multiple processes, one generally uses message passing for communication between processes and avoids having to use any synchronization primitives like locks."

JM
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to