[Python-es] mejor forma de implementar un "loop" de espera hasta que una condicion se hace verdadera
Chema Cortes
pych3m4 en gmail.com
Mar Nov 26 01:24:31 CET 2013
El día 25 de noviembre de 2013 22:59, Jose Caballero
<jcaballero.hep en gmail.com> escribió:
> Gracias a todos por las respuestas.
> Y si fuese un caso general, y no solo lo de los ficheros? Alguna "best
> practice" sobre como hacer un "loop" de espera hasta que algo ocurra?
> O depende del caso concreto?
Para ficheros, se aprovechan los eventos del sistema de ficheros como
sería inotify en linux (que se podría generalizar a otros sistemas
usando la librería watchdog[1]).
En general, suponiendo que el hecho que tiene que ocurrir produzca un
"evento", se emplearía un patrón "observer"[2] ("listener") para
propagar la notificación.
Lo complicado ahora es encajarlo en una aplicación como sería tener un
bucle de eventos y que un grupo de guardianes lancen eventos cuando
detecten determinados cambios de estado.
Lo que no se debería hacer, de ninguna forma, es tener varios bucles
(hilos) esperando a que se produzca un mismo cambio de estado. Sólo un
bucle y que lance eventos para notificar a sus subscriptores.
Y sí, crear el bucle de espera depende de cada caso. El modelo más
simple sería tener un hilo que despierta a intervalos regulares y que
comprueba si ha habido un cambio de estado, en cuyo caso lanza un
evento. Se puede complicar mucho más según qué necesidades de
sincronización consideres.
[1]: http://pythonhosted.org/watchdog/
[2]: http://es.wikipedia.org/wiki/Observer_(patrón_de_diseño)
>
> Un saludo,
> Jose
>
> 2013/11/25 Jordi Funollet Pujol <funollet en fastmail.fm>:
>> https://github.com/seb-m/pyinotify
>>
>> Suponiendo que lo que te interesa monitorizar son ficheros, y no un caso más
>> general.
>> --
>> Jordi Funollet Pujol
>> http://www.linkedin.com/in/jordifunollet
>>
>> _______________________________________________
>> Python-es mailing list
>> Python-es en python.org
>> https://mail.python.org/mailman/listinfo/python-es
>> FAQ: http://python-es-faq.wikidot.com/
> _______________________________________________
> Python-es mailing list
> Python-es en python.org
> https://mail.python.org/mailman/listinfo/python-es
> FAQ: http://python-es-faq.wikidot.com/
--
Hyperreals *R "Quarks, bits y otras criaturas infinitesimales":
http://ch3m4.org/blog
Buscador Python Hispano: http://ch3m4.org/python-es
Más información sobre la lista de distribución Python-es