[pyar] Acceso a objetos desde multiples threads + ZODB

Julian Agustin Cardonnet jcardonnet en gmail.com
Lun Mayo 5 20:41:41 ART 2014


Hola Laucha,
Yo tampoco use nunca ZODB asi que con eso no te puedo ayudar... Lo que si,
queria hacerte un comentario sobre el uso del mutex en el ejemplo que
pusiste:
        mutex.aqcuire()
        e.name = "pepe"
        mutex.release()

Si lo pones asi y el codigo de la seccion critica tira una excepcion, el
mutex nunca se va a liberar asi que el resto de los hilos se van a empezar
a bloquear.

La 1ra opcion (y mas artesanal) para evitar el problema es meter todo en un
bloque try/catch/finally

    mutex.acquire()
    try:
        e.name = "pepe"
    finally:
        mutex.release()

La otra (y a gusto mi mejor) es usar el context manager que implementan los
mutex via la sentencia with:
with mutex:
e.name = "pepe"

Con el with, si algo falla el mutex se libera automaticamente y ademas no
te arriesgas a "olvidarte" de liberar el mutex. Algunos tambien opinarian
que el codigo queda mas limpio...

Capaz que todo esto ya lo sabias y pero en una de esas alguien mas lee esto
y se evita dolores de cabeza y tiempo perdido cazando bugs de concurrencia
que son una pesadilla.

Saludos,
Julian
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20140505/e48721db/attachment.html>


More information about the pyar mailing list