[pyar] Duda, procesos e instancias
Martin Cerdeira
martincerdeira en gmail.com
Lun Nov 14 23:16:36 ART 2011
2011/11/14 Alejandro Santos <listas en alejolp.com>
> 2011/11/14 Alejandro Santos <listas en alejolp.com>:
> >
> > Lo que estás queriendo hacer se puede solucionar usando un Proxy. En
> > la doc del módulo multiprocessing podés ver un par de ejemplo de como
> > usar los managers. [2] [3]
> >
> > [1]
> http://stackoverflow.com/questions/986006/python-how-do-i-pass-a-variable-by-reference
> > [2] http://docs.python.org/library/multiprocessing.html#proxy-objects
> > [3]
> http://docs.python.org/library/multiprocessing.html#module-multiprocessing.managers
> >
>
> Un poco mejor explicado: un Proxy te permite ejecutar desde un TPT
> (thread/proceso/tarea/etc.) codigo desde otro TPT, haciendo una simple
> llamada a un método/función.
>
> Por ejemplo, si querés que desde tu tarea1 se codigo como si fuese la
> tarea2 la que lo ejecuta, tenés dos opciones:
>
> (a) Usar una Queue o Fifo para avisarle desde el otro TPT que haga la
> llamada:
>
> def tarea1(queue, queue2):
> queue.append("llamá a raw_input")
> y = queue2.pop()
>
> def tarea2(queue, queue2):
> while 1:
> x = queue.pop()
> if x == "llamá a raw_input":
> y = raw_input()
> queue2.append(y)
>
> (b) Usar un proxy:
>
> def llamador_a_raw_input():
> return raw_input()
>
> def tarea1(llamador):
> # Acá se hace la magia para ejecutar raw_input en el TPT tarea2
> y = llamador()
>
> def tarea2():
> manager.serve_forever()
>
> def main():
> llamador = manager.nuevo_proxy_a_una_funcion(llamador_a_raw_input)
> proceso1 = nuevo_proceso(tarea1)
> proceso2 = nuevo_proceso(tarea2)
> proceso1.start()
> proceso2.start()
>
> --
> Alejandro Santos
> _______________________________________________
> pyar mailing list pyar en python.org.ar
> http://listas.python.org.ar/listinfo/pyar
>
> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>
> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
> Argentina - http://www.usla.org.ar
>
Ante todo, gracias a todos por las respuestas!
La Queue, la tengo en mi ejemplo. No funciona, de alguna forma está creando
una instancia diferente. Veo que usás pop() y append() del objecto Queue.
Es un error? O es la versión de Python, porque yo no tengo esos métodos.
Voy a seguir investigando como pasar una instancia de una clase entre
procesos, no tendría que ser taaaaan dificil, será cuestión de que le tome
más la mano.
Saludos y gracias por todoooo
-------------------------------------
Martín Cerdeira - Software Developer
[web] http://www.codmacs.blogspot.com/
() ascii ribbon campaign
/\ www.asciiribbon.org
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20111114/21d609a7/attachment.html>
More information about the pyar
mailing list