sirve que para examples example ejemplos python multithreading subprocess rsync

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