[pyar] Acceso a objetos desde multiples threads + ZODB

Lautaro Woites lauchapc87 en gmail.com
Mie Abr 30 16:38:40 ART 2014


Hola muchachos, como va?

Estuve probando la modificación multithread de un objeto persitente ZODB
con un ejemplo tonto. Y me encontre con el problema de que si modifico
un objeto desde varios threads (con exclusión mutua) los datos no se
persisten.
Si no hago modificaciones desde otro thread los objetos se persisten
correctamente.

Mi ejemplo consta de una clase Empresa y una clase Empleado. La clase
Empresa tiene una lista de Empleados. Ambas clases heredan de Persistent.

*Pseudocodigo del ejemplo:*

mutex = threading.Lock()

def thread_1(enterprise):
    for e in enterprise.empleados():
        mutex.aqcuire()
        e.name = "pepe"
        mutex.release()
        time.sleep(random.random())

def main():
     enterprise = root.enterprise
     threading.Thread(target=thread_1, args=[enterprise])
     threading.start()
     for e in enterprise.empleados():
         new_age = random.randint(0, 100)
         mutex.acquire()
         e.age = new_age
         mutex.release()
         time.sleep(random.random())

     l.acquire()
     transaction.commit()
     l.release()

En el manual de ZODB [0] dicen que el soporte ZODB para apps multithreading
debería funcionar.
¿Tienen idea de si estoy haciendo algo mal? Si quieren puedo subir el
ejemplo.


Muchas gracias!!!

[0]
http://zodborg.readthedocs.org/en/latest/documentation/guide/transactions.html#multithreaded-zodb-programs

laucha
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20140430/c4e1491b/attachment.html>


More information about the pyar mailing list