我有一台启动命令行应用的服务器。它们接收本地文件路径,加载文件,导出内容,然后关闭。
它正在运行,但我希望能够跟踪哪些任务处于活动状态以及哪些任务已完成。
所以用这一行: p = mp.Process(target = subprocess.Popen(mayapy +' - u'+ job.pyFile),group = None)
我尝试了'is_alive',它总是返回False。
子进程关闭,我看到它在任务管理器中关闭了,但进程和pid似乎仍然可以查询。
答案 0 :(得分: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