2010-08-29 161 views
4

我的python腳本需要啓動後臺進程,然後繼續處理完成,而不必等待返回。從python腳本內啓動python腳本作爲後臺進程

後臺腳本將會處理一段時間,並且不會生成任何屏幕輸出。

沒有所需的進程間數據。

我已經嘗試過使用各種方法子進程,多處理,但我顯然缺少的東西。

有沒有人有一個簡單的例子?

TIA

回答

3

這個怎麼樣:

import subprocess 
from multiprocessing import Process 

Process(target=subprocess.call, args=(('ls', '-l',),)).start() 

這是不是所有的優雅,但它滿足您的所有需求。

1

有關於如何做到這一點的各種片/件中的Calling an external command in Python一個很好的書面記錄(每@lecodesportif)。

一個快速的答案的要點是:

retcode = subprocess.call(["ls", "-l"]) 
+0

它沒有「沒有等待」的要求。 – 2010-08-29 17:39:50

+1

啊 - 我的不好,我錯過了閱讀。你很正確。斯特凡諾的回答應該做你想要的。 – heckj 2010-08-29 18:07:14

+0

怎麼樣?'retcode = subprocess.call([「ls -l&」],shell = True)''。這對我行得通。 – SunSparc 2013-05-21 21:33:45

2

簡單:

subprocess.Popen(["background-process", "arguments"]) 

如果您想稍後檢查後臺進程是否完成了它的任務,保留到POPEN對象的引用和使用它的方法是poll()