[pyar] Empiezo una implementación: tail -f like software

Juanjo Conti jjconti en gmail.com
Mar Ago 31 11:05:40 ART 2010


Parece que la idea de leer de la stdin TANTO el archivo de log como los
comandos de usuario es un quilombo.

Opté por un enfoque más simple. 2 hilos, uno lee el archivo y lo va poniendo
en pantalla, el otro está a la espera de comandos de usuario (por stdin).

Adjunto la primera implementación, que tiene bastantes problemas:

* Uso: para poder ingresar un comando primero hay que dar un enter, esto
detiene la lectura del archivo (para no confundir lo que el usuario tipea
con el log). Es pedorro pero me sirve.
* Uso una variable global STOP para comunicar los dos hilos/procesos. No se
si hace falta protegerla de alguna condición de competencia, a priori me
parece que no, pero me gustaría estar usando algo más elegante.
* Como uso hilos Ctrl-C no me corta el programa y tengo que matarlo con kill
-9
* NO implementé nada de lo que quería: filtros y colores. Si esta base, que
no hace nada, anda bien, el resto sale por un tubo, creo.

Para no usar hilos, probé, como dice Roberto en su artículo en la revista,
usar multiprocessing (en el código que paso es comentar y descomentar para
probar las dos opciones), pero no andan igual.

* Con multiprocessing tengo una excepción EOF por el raw_input que estoy
usando y muere el proceso.
* Con multiprocessing si se puede finalizar el programa usando Ctrl-C

Cómo probarlo fácil:

$ while true; do sleep 1; date >> log.txt; done &
$ python bee.py log.txt

-- 
Juanjo Conti
blog: http://www.juanjoconti.com.ar
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20100831/71dda3e9/attachment.html>
------------ próxima parte ------------
A non-text attachment was scrubbed...
Name: bee.py
Type: application/x-python
Size: 740 bytes
Desc: no disponible
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20100831/71dda3e9/attachment.bin>


More information about the pyar mailing list