2013-03-17 45 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