[pyar] Acceso a objetos desde multiples threads + ZODB
Lautaro Woites
lauchapc87 en gmail.com
Lun Mayo 5 10:19:09 ART 2014
nadie tiene una punta? :(
laucha
El 30 de abril de 2014, 16:45, Lautaro Woites <lauchapc87 en gmail.com>escribió:
>
> Corrijo una cosa ...
>
> laucha
>
>
> El 30 de abril de 2014, 16:38, Lautaro Woites <lauchapc87 en gmail.com>escribió:
>
> 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())
>>
>> <esperar_que termine_el_thread>
>
>
>> 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/20140505/5ee63e90/attachment.html>
More information about the pyar
mailing list