Ver Mensaje Individual
  #4 (permalink)  
Antiguo 03/01/2011, 05:14
pykiss
 
Fecha de Ingreso: enero-2011
Mensajes: 1
Antigüedad: 13 años, 10 meses
Puntos: 0
Respuesta: multi procesos en python

No tengo muy claro que quieres hacer con el ejemplo ese.

Puedes trabajar con sockets en modo no blocante.
Para ello tienes por ejemplo select.poll, pero es de muy bajo nivel.

yo tengo una librería que es pykiss.poll que es lo mismo pero de mayor nivel, te permite asignar callbacks a los eventos de I/O.

Si en vez de threads te animas a probar los procesos, tengo una librería llamada pykiss.fork que permite la comunicación entre procesos mediante eventos/callbacks, de una manera muy sencilla.

Esto sería equivalente a tu ejemplo
Código:
from pykiss import fork


class Vehiculo_Process(fork.Process):
    def main(self):
        printf("Ejecutando")
		self.instance_events['parametros'] = self.parametros
        fork.Process.main(self)

    def transmitir(self):
    		self.send_event(keyword = 'aceleracion', aceleracion = self.aceleracion)

	def parametros(self, evento):
    	self.direccion = evento['direccion']
    	self.velocidad = evento['velocidad']
    	self.aceleracion = evento['aceleracion']
        print ("El vehiculo tiene una velocidad de %s, y una aceleracion de %s, siguiendo la direccion %s"%(self.velocidad, self.aceleracion, self.direccion))


class Vehiculo_Driver(fork.Driver):
	def parametros(self, direccion, velocidad, aceleracion):
		self.send_event(keyword = 'parametros', direccion=direccion, velocidad=velocidad, aceleracion=aceleracion)

def reenviar(event, driver):
	for d in control.drivers:
		if d==driver:
			continue
		d.send_event(**event)

control = fork.Control()
control.events['aceleracion'] = reenviar


 
vehiculo1 = control.fork(Vehiculo_Driver, Vehiculo_Process)
vehiculo1.parametros("norte",20,0)

vehiculo2 = control.fork(Vehiculo_Driver, Vehiculo_Process)
vehiculo2.parametros("norte",30,0)

vehiculo3 = control.fork(Vehiculo_Driver, Vehiculo_Process)
vehiculo3.parametros("sur",60,0)
Pero no veo que haya nadie escuchando por la aceleración que envías, ni nada.
Si pones un ejemplo funcional te lo "convierto" a procesos concurrentes con pykiss

Última edición por pykiss; 03/01/2011 a las 05:32