等待进程终止
psutil.wait_procs(procs, timeout=None, callback=None) - 原文
等待 Process 实例列表终止的快捷函数。 返回一个 (gone, alive)
元组,指示哪些进程已经消失,哪些仍然活着。消失的进程实例将有一个新的 returncode 属性,表示 Process.wait() 返回的进程退出状态。callback 参数是一个函数,当正在等待的进程之一终止并且 Process 实例作为回调参数传递时会被调用(该实例还将具有 returncode 属性集合)。一旦所有进程终止或超时(单位:秒)发生,此函数将返回。 与 Process.wait() 不同,如果发生超时,它不会引发 TimeoutExpired。 一个典型的用例可能是:
- 将 SIGTERM 信号发送到进程列表
- 给他们一些时间来终止
- 发送 SIGKILL 给那些还活着的进程
终止并等待此进程的所有子进程的示例:
import psutil
def on_terminate(proc):
print("process {} terminated with exit code {}".format(proc, proc.returncode))
procs = psutil.Process().children()
for p in procs:
p.terminate()
gone, alive = psutil.wait_procs(procs, timeout=3, callback=on_terminate)
for p in alive:
p.kill()