que - Python Subprocess.Popen desde un hilo
subprocess.popen python example (2)
Aquí hay una gran implementación que no utiliza subprocesos: constantly-print-subprocess-output-while-process-is-running
import subprocess
def execute(command):
process = subprocess.Popen(command, shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
output = ''''
# Poll process for new output until finished
for line in iter(process.stdout.readline, ""):
print line,
output += line
process.wait()
exitCode = process.returncode
if (exitCode == 0):
return output
else:
raise Exception(command, exitCode, output)
execute([''ping'', ''localhost''])
Estoy intentando lanzar un ''rsync'' usando el módulo de subproceso y Popen dentro de un hilo. Después de llamar a rsync, necesito leer la salida también. Estoy usando el método de comunicación para leer la salida. El código funciona bien cuando no uso un hilo. Parece que cuando uso un hilo cuelga en la llamada de comunicación. Otra cosa que he notado es que cuando configuro shell = False no obtengo nada de la comunicación cuando se ejecuta en un hilo.
No nos proporcionó ningún código para que veamos, pero aquí hay una muestra que hace algo similar a lo que describe:
import threading
import subprocess
class MyClass(threading.Thread):
def __init__(self):
self.stdout = None
self.stderr = None
threading.Thread.__init__(self)
def run(self):
p = subprocess.Popen(''rsync -av /etc/passwd /tmp''.split(),
shell=False,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE)
self.stdout, self.stderr = p.communicate()
myclass = MyClass()
myclass.start()
myclass.join()
print myclass.stdout