Tengo un trabajo bastante largo, que se ejecuta durante varios minutos y luego se reinicia. La tarea emite diversa información que capturo de esta manera:¿Cómo puedo capturar la salida y mostrarla al mismo tiempo con Python?
output = subprocess.Popen(cmd,stdout=subprocess.PIPE).communicate()
El problema es que solo obtendré la salida completa a la vez. Me gustaría mostrar el resultado ya que el programa lo está enviando a stdout, mientras lo sigue empujando hacia atrás en un búfer (necesito verificar la salida para ver la presencia de algunas cadenas). En Rubí lo haría así:
IO.popen(cmd) do |io|
io.each_line do |line|
puts line
buffer << line
end
end
Dado que no especificó un tamaño de búfer, se agregará un búfer de 4 KB entre los dos procesos, por lo que generalmente no se bloquearán entre sí. –