+
87
-

回答

两种办法

1、ubprocess.run(["taskkill", "/F", "/T", "/PID", str(process.pid)], check=True)

2、import psutil

def terminate_process_and_children(pid):
    """递归终止指定 PID 的进程及其所有子进程"""
    try:
        parent = psutil.Process(pid)
        children = parent.children(recursive=True)  # 获取所有子进程
        for child in children:
            child.terminate()  # 尝试优雅地终止子进程
        parent.terminate()  # 尝试优雅地终止父进程
        gone, alive = psutil.wait_procs(children + [parent], timeout=5)  # 等待 5 秒
        for p in alive:
            p.kill()  # 强制杀死未终止的进程
    except psutil.NoSuchProcess:
        pass  # 如果进程已经不存在,则忽略

terminate_process_and_children(process.pid)

网友回复

我知道答案,我要回答