¿Cómo lanzar y ejecutar un script externo en segundo plano? [duplicar]
-
05-07-2019 - |
Pregunta
Esta pregunta ya tiene una respuesta aquí:
Probé estos dos métodos:
os.system("python test.py")
subprocess.Popen("python test.py", shell=True)
Ambos enfoques deben esperar hasta que test.py termine, lo que bloquea el proceso principal. Sé que "nohup" puede hacer el trabajo ¿Hay alguna forma de Python para iniciar test.py o cualquier otro script de shell y dejarlo ejecutándose en segundo plano?
Supongamos que test.py es así:
for i in range(0, 1000000):
print i
Tanto os.system () como subprocess.Popen () bloquearán el programa principal hasta que se muestren 1000000 líneas de salida. Lo que quiero es dejar que test.py se ejecute de forma silenciosa y que solo muestre la salida del programa principal. El programa principal puede permanecer apagado mientras test.py aún se está ejecutando.
Solución
subprocess.Popen ([" python " ;, test.py "])
debería funcionar .
Tenga en cuenta que el trabajo aún podría morir cuando se cierre la secuencia de comandos principal. En este caso, intente subprocess.Popen ([" nohup " ;, " python " ;, " test.py "])
Otros consejos
os.spawnlp(os.P_NOWAIT, "path_to_test.py", "test.py")