Come avviare ed eseguire script esterni in background? [duplicare]
-
05-07-2019 - |
Domanda
Questa domanda ha già una risposta qui:
Ho provato questi due metodi:
os.system("python test.py")
subprocess.Popen("python test.py", shell=True)
Entrambi gli approcci devono attendere fino al termine di test.py che blocca il processo principale. Conosco "nohup" può fare il lavoro. Esiste un modo Python per avviare test.py o altri script di shell e lasciarlo in esecuzione in background?
Supponiamo che test.py sia così:
for i in range(0, 1000000):
print i
Sia os.system () o subprocess.Popen () bloccheranno il programma principale fino a visualizzare 1000000 righe di output. Quello che voglio è lasciare che test.py funzioni silenziosamente e visualizzi solo l'output del programma principale. Il programma principale potrebbe bloccarsi mentre test.py è ancora in esecuzione.
Soluzione
subprocess.Popen ([" python " ;, " test.py "])
dovrebbe funzionare .
Nota che il lavoro potrebbe ancora morire quando esce lo script principale. In questo caso, prova subprocess.Popen ([" nohup " ;, " python " ;, " test.py "])
Altri suggerimenti
os.spawnlp(os.P_NOWAIT, "path_to_test.py", "test.py")