1

我有一个启动命令行应用程序的服务器。他们接收本地文件路径,加载文件,导出某些内容,然后关闭。

它正在工作,但我希望能够跟踪哪些任务处于活动状态以及哪些任务已完成。

所以有了这一行: p = mp.Process(target=subprocess.Popen(mayapy + ' -u ' + job.pyFile), group=None)

我试过'is_alive',它总是返回False。

子进程关闭,我看到它在任务管理器中关闭,但进程和 pid 似乎仍然可以查询。

4

1 回答 1

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
于 2013-03-17T01:14:16.917 回答