Estoy tratando de leer líneas de una tubería y procesarlas, pero estoy haciendo algo tonto y no puedo entender qué. El productor se va a mantener la producción de líneas de forma indefinida, así:Python - líneas simples de lectura de una tubería
producer.py
import time
while True:
print 'Data'
time.sleep(1)
El consumidor sólo tiene que comprobar periódicamente líneas:
consumer.py
import sys, time
while True:
line = sys.stdin.readline()
if line:
print 'Got data:', line
else:
time.sleep(1)
Cuando ejecuto esto en el shell de Windows como python producer.py | python consumer.py
, simplemente duerme para siempre (¿parece que nunca se obtienen datos?) Parece que tal vez el problema es que ucer nunca termina, ya que si envío una cantidad finita de datos, funciona bien.
¿Cómo puedo obtener los datos que se recibirán y aparecerán para el consumidor? En la aplicación real, el productor es un programa C++ sobre el que no tengo control.
¿Has leído la última oración de la pregunta? – jwg