Estoy utilizando el módulo de subproceso para ejecutar binarios de python.Salida de subproceso Python a stdout
para capturar la salida producida por el binario, estoy usando:
proc = subprocess.Popen (command_args, shell=False, stdout=subprocess.PIPE)
out = proc.communicate()[0]
#print the output of the child process to stdout
print (out)
Lo que esto hace es imprimir la salida del proceso después de que haya terminado de ejecutarse. ¿De todos modos puedo imprimir esta salida a stdout MIENTRAS el programa se está ejecutando? Realmente necesito ver cuál es el resultado porque estos programas pueden ejecutarse durante mucho tiempo.
Gracias por la ayuda.
chicos importa, creo que he encontrado la solución: 'Básicamente, usted tiene 3 opciones: Uso enhebrado a leer en otro hilo sin bloquear el hilo principal. seleccione en stdout, stderr en lugar de comunicar. De esta forma, puede leer solo cuando los datos están disponibles y evitar el bloqueo. Deje que una biblioteca resuelva esto, retorcido es una elección obvia. – therealtypon
Si encuentra otra respuesta, como http://stackoverflow.com/questions/4585692/python-nonblocking-subprocess-check-stdout/4585898#4585898, enlace a él en lugar de duplicar la respuesta en comentario a su propia pregunta. – phooji
Perdón por eso. Pensé que el punto en el comentario era la esencia destilada de stackoverflow.com/questions/4585692/... Lo tendré en cuenta la próxima vez – therealtypon