[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