2013-03-17 40 views
1

我有一臺啓動命令行應用程序的服務器。他們收到本地文件路徑,加載文件,導出內容,然後關閉。multiprocessing.Process subprocess.Popen完成?

它正在工作,但我希望能夠跟蹤哪些任務處於活動狀態並完成哪些任務。

因此,與這條線: P = mp.Process(目標= subprocess.Popen(mayapy + '-u' + job.pyFile),基團=無)

我試圖 'is_alive',和它總是返回False。

子進程關閉,我看到它在任務管理器中關閉,但進程和PID仍然顯示爲可查詢。

回答

2

您對mp.Process的使用是錯誤的。 target應該是一個函數,而不是返回值subprocess.Popen(...)

在任何情況下,如果定義:

proc = subprocess.Popen(mayapy + ' -u ' + job.pyFile) 

然後proc.poll()None當處理工作,並且將等於一個返回值(未None)當過程已經終止。


例如,(輸出是評價)

import subprocess 
import shlex 
import time 
PIPE = subprocess.PIPE 

proc = subprocess.Popen(shlex.split('ls -lR /'), stdout=PIPE) 
time.sleep(1) 
print(proc.poll()) 
# None 

proc.terminate() 
time.sleep(1) 
print(proc.poll()) 
# -15