Ho provato questi due metodi:Come avviare ed eseguire script esterni in background?
os.system("python test.py")
subprocess.Popen("python test.py", shell=True)
Entrambi gli approcci bisogno di aspettare che test.py finiture che blocca di processo principale. So che "nohup" può fare il lavoro. Esiste un modo Python per avviare test.py o altri script di shell e lasciarlo in esecuzione in background?
test.py Supponiamo è così:
for i in range(0, 1000000):
print i
Sia os.system() o subprocess.Popen() bloccherà programma principale fino 1000000 righe di output visualizzati. Quello che voglio è lasciare che test.py funzioni silenziosamente e mostri solo l'output del programma principale. Il programma principale potrebbe interrompersi mentre test.py è ancora in esecuzione.
subprocess.Popen ([ "pitone", "test.py"]) solo lancia processo principale test.py e blocchi di attesa per l'uscita di test.py. – jack
Questo dovrebbe accadere solo se si richiede anche 'stdout = PIPE'. Quale versione di Python? Puoi aggiungere un 'print" xxx "' dopo la chiamata a Popen per verificare che blocchi davvero? –
Ho appena testato il codice sopra e funziona per me con Python 2.5.2 su Windows. Il tuo problema deve essere qualcos'altro. –