2016-01-11 41 views
0

我看過很多關於我的主題的帖子,但實際上我沒有找到解決我的問題的方法。 我想在後臺運行一個子進程,而不用等待子進程執行。被調用的子進程是一個shell腳本,它執行許多不同的事情。 這是一小塊我的代碼:如何運行Python的子進程並將其保留在後臺

print "Execute command:", full_command 
subprocess.Popen(full_command, stdin=None, stdout=None, stderr=None, close_fds=True).communicate() 
print "After subprocess" 

而我的問題是,Python的等待,直到subprocess.Popen完成它的工作。我讀過,stdin(-out,-err)= None應該可以解決這個問題,但事實並非如此。另外close_fds = True,在這裏沒有幫助。

回答

5

Popen.communicate documentation(重點煤礦):

與互動的過程:將數據發送至標準輸入。從stdout和 stderr中讀取數據,直到達到文件結束。 等待進程終止。 可選輸入參數應該是要發送給子進程 進程的字符串,如果沒有數據應發送給子進程,則爲無。

如果你不想等待進程終止,後來乾脆不叫communicate

subprocess.Popen(full_command, close_fds=True) 
+0

哦,那是太容易被明顯...;)謝謝爲真正快速的答案! – mchfrnc

+0

@mchfrnc我不得不承認方法的名稱並沒有使這個副作用非常明顯! ; ) –

相關問題