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