[pyar] Duda, procesos e instancias

Martin Cerdeira martincerdeira en gmail.com
Dom Nov 13 22:59:22 ART 2011


Hola lista. Estaba armando un programa que usa multiprocessing y, queriendo
pasar una instancia de una clase, no logro hacerlo. Probé de 2 formas,
pasandole el parámetro directamente y utilizando el objeto Queue. La
instancia es de una clase mía que se llama debugger:

import debugger
import time
import multiprocessing

def lolo(q):
    db = q.get()[0]
    print db
    db.debug("uno.py")

def lala():
    db = debugger.Debugger()
    q = multiprocessing.Queue()
    q.put([db])
    hilo = multiprocessing.Process(target=lolo, args=(q,))
    hilo.start()
    print "lanzo"
    while hilo.is_alive():
        print "esperando 5 segundos para mandar comando"
        time.sleep(5)
        print "mando comando s a ", db
        db.comando("s")
        hilo.join(.3)

if __name__ == '__main__':
   lala()


Con los print db, veo que la instancia de la clase no es la misma. Yo
necesito pasarle la instancia, como si fuera por referencia.
También intenté esto:

import debugger
import time
import multiprocessing

def lolo(db):
    print db
    db.debug("uno.py")

def lala():
    db = debugger.Debugger()
    hilo = multiprocessing.Process(target=lolo, args=(db,))
    hilo.start()
    print "lanzo"
    while hilo.is_alive():
        print "esperando 5 segundos para mandar comando"
        time.sleep(5)
        print "mando comando s a ", db
        db.comando("s")
        hilo.join(.3)

if __name__ == '__main__':
   lala()

Un ejemplo de lo que veo por pantalla es:

<debugger.Debugger instance at 0x000000000245E8C8>   # Este es el print que
esta en lolo()

mando comando s a  <debugger.Debugger instance at 0x00000000022D2048> #
Este es el segundo print, en lala(), donde se ve que la instancia es otra.

En qué le estoy errando? Sé que python toma "deciciones" sobre si pasar por
parámetro o por referencia tomando en cuenta la inmutabilidad de los
objetos. Imagino que este problema pasa por ahí, hay forma de
explicitamente decirle que me pase la referencia del objeto??

Gracias!!!
-------------------------------------
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/20111113/4a1ca0a6/attachment.html>


More information about the pyar mailing list