Proceso de comunicación en Python.

¿Cuál es la mejor manera de establecer la comunicación entre dos procesos en python? Después de un poco de google, traté de hacerlo:

parent_pipe, child_pipe = Pipe() p = Process(target = instance_tuple.instance.run(), \ args = (parent_pipe, child_pipe,)) p.start() 

Enviando datos al proceso hijo:

 command = Command(command_name, args) parent_pipe.send(command) 

Proceso de la función de destino:

 while True: if (self.parent_pipe.poll()): command = parent_pipe.recv() if (command.name == 'init_model'): self.init_model() elif (command.name == 'get_tree'): tree = self.get_fidesys_tree(*command.args) result = CommandResult(command.name, tree) self.child_pipe.send(result) elif(command.name == 'set_variable'): name = command.args[0] value = command.args[1] self.config[name] = value 

Pero parece que no funciona (el proceso secundario no recibe nada a través de parent_pipe ). ¿Cómo puedo arreglarlo?

Gracias por adelantado.

Puede consultar aquí: http://docs.python.org/library/multiprocessing.html#exchanging-objects-between-processes La solución es cercana a la suya pero parece más fácil.

Si entiendo la documentación, en el proceso secundario debe leer la parte secundaria de la canalización.

 # Process Target function while True: # poll(None) because you don't want to go through the loop fast between commands if (self.child_pipe.poll(None)): command = child_pipe.recv() if (command.name == 'init_model'): self.init_model() elif (command.name == 'get_tree'): tree = self.get_fidesys_tree(*command.args) result = CommandResult(command.name, tree) self.child_pipe.send(result) elif(command.name == 'set_variable'): name = command.args[0] value = command.args[1] self.config[name] = value