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.

È stato utile?

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")
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top