You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python Selenium调用webdriver.quit()后Chrome.exe后台进程未终止问题

解决Chrome Driver执行webdriver.quit()后后台进程残留的问题

我之前也踩过这个坑,尤其是在Windows环境下用Python调度器反复跑Selenium任务时,后台chrome.exe堆得内存直接告警。结合你的场景,给你几个经过验证的实用解决方案:

1. 显式清理Chrome进程树(最推荐)

webdriver.quit()有时候只终止了Driver本身的进程,没彻底杀掉它启动的所有Chrome子进程。我们可以用psutil库追踪并终止整个关联进程树,确保不留尾巴。

首先安装psutil:

pip install psutil

然后修改你的代码,在driver.quit()之后加上进程清理逻辑:

import psutil
from selenium import webdriver

def run_selenium_task():
    driver = webdriver.Chrome()
    try:
        # 这里放你的业务操作代码,比如页面跳转、元素交互等
        driver.get("https://example.com")
    finally:
        # 先执行Driver退出
        driver.quit()
        # 获取Driver进程的ID
        driver_pid = driver.service.process.pid
        # 找到该进程下所有关联的Chrome子进程
        parent_process = psutil.Process(driver_pid)
        child_processes = parent_process.children(recursive=True)
        # 逐个终止子进程
        for proc in child_processes:
            try:
                proc.kill()
            except psutil.NoSuchProcess:
                # 进程已不存在就跳过
                pass

这个方法能确保每次任务结束后,所有关联的Chrome进程都被彻底清理,不会持续积累。

2. 通过ChromeOptions限制后台进程生成

如果你不想额外依赖psutil,可以尝试给Chrome添加启动参数,减少不必要的后台进程生成。不过要注意,这些参数可能影响Chrome的部分功能,需要根据你的业务场景测试:

from selenium import webdriver
from selenium.webdriver.chrome.options import Options

chrome_options = Options()
# 禁用Chrome的进程启动器zygote,减少子进程生成
chrome_options.add_argument("--no-zygote")
# 强制单进程运行(复杂页面可能不稳定,谨慎使用)
chrome_options.add_argument("--single-process")
# 禁用沙箱(部分Windows环境下需要)
chrome_options.add_argument("--no-sandbox")

driver = webdriver.Chrome(options=chrome_options)
# 执行操作...
driver.quit()

3. 确保调度器任务的资源闭环

如果用的是APScheduler这类Python调度器,一定要在任务函数里用try...finally块,保证不管任务成功还是失败,Driver退出和进程清理的逻辑都会执行。避免因为任务抛出异常导致Driver对象未被正确销毁,进而残留进程。

补充说明

你提到退出Python调度器后所有Chrome进程都会消失,这是因为这些残留的chrome.exe都是调度器进程的子进程,当父进程退出时,Windows系统会自动回收这些子进程。但问题在于调度器长期运行时,这些子进程会不断积累占满内存,所以必须在每次任务结束时主动清理。

另外,记得检查Chrome浏览器和Chrome Driver的版本是否严格匹配——有时候版本不兼容也会导致进程回收异常,虽然你用了最新Selenium,但还是要确认Driver版本和Chrome版本对应。

内容的提问来源于stack exchange,提问作者Sion C

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 04:07:31