[pyar] comunicacion con un proceso

Ale peralta.alejandro en gmail.com
Jue Feb 10 11:26:29 ART 2011


El día 10 de febrero de 2011 10:51, Matias Graña
<matias.alejo en gmail.com> escribió:
> 2011/2/10 Roberto Alsina <ralsina en netmanagers.com.ar>:
>> On 2/10/2011 10:14 AM, Matias Graña wrote:
> $ cat lento
> #!/bin/bash
> for (( i=0; i<10; i++ )) ; do
>        echo $i
>        sleep 1
> done

El problema no es python, es tu program en bash que no está haciendo
un flush del stdout, lo esta buffereando.

Fijate que ./lento.sh | tail -f hace lo mismo...

Tendrás que ver como hacer para que echo haga flush del stdout, o
hacer el "lento" en python :-)

Saludos,

>
> Y en python, luego de importar subprocess,
>
>>>> def n():
>        p = subprocess.Popen('lento', stdout=subprocess.PIPE,
> stderr=subprocess.PIPE, stdin=subprocess.PIPE, bufsize=0)
>        so = p.stdout
>        for line in so:
>                print line
>
>>>> n()
>


> Yo esperaría que esto vaya tirando los números del 0 al 9 a razón de
> uno por segundo (como hace el comando 'lento' original). Pero no,
> espera 10 segundos y luego imprime todos juntos. Cómo hago para verlos
> a medida que van saliendo?
>
> Matías
> _______________________________________________
> pyar mailing list pyar en python.org.ar
> http://listas.python.org.ar/listinfo/pyar
>
> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>



-- 
Ale.



More information about the pyar mailing list