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

Python for循环中调用os.system执行taskkill第二次无法关闭Chrome

问题原因
  • 核心问题出在webbrowser模块的调用逻辑和Chrome的默认后台驻留机制:
    • 首次循环时系统没有运行的Chrome进程,调用webbrowser.get().open_new()会启动新的Chrome主进程,taskkill可以正常杀掉所有进程
    • Chrome默认开启「关闭后继续运行后台应用」设置,首次杀进程后会残留轻量后台进程,第二次调用webbrowser方法时不会启动新进程,只会给残留进程发消息打开新标签,此时taskkill会因为进程状态、权限关联问题无法正常结束残留进程
    • 你当前用的taskkill /im chrome.exe是全量杀所有Chrome进程,如果用户本身开了其他Chrome窗口也会被误杀,进一步导致进程状态混乱
修复方案

推荐改用subprocess模块直接启动Chrome进程,拿到进程实例后精准杀死你启动的这个进程,完全避免残留进程和误杀问题,还可以加启动参数避免Chrome弹出崩溃恢复提示:

import subprocess
import time

url = '<url>'
chrome_path = 'C:/Program Files/Google/Chrome/Application/chrome.exe'
# 启动参数说明:禁用会话恢复、禁用首次运行引导、启动独立窗口
chrome_args = [chrome_path, '--disable-restore-session-state', '--no-first-run', '--new-window', url]

for i in range(3):
    # 启动Chrome进程,拿到进程对象
    chrome_proc = subprocess.Popen(chrome_args)
    time.sleep(10)
    # 精准杀死本次启动的Chrome进程,不会影响其他已有的Chrome窗口
    chrome_proc.kill()
    # 等待进程资源回收
    chrome_proc.wait()
    time.sleep(10)

如果要继续使用原逻辑,需要先手动关闭Chrome的后台驻留设置:打开Chrome设置 → 系统 → 关闭「关闭 Google Chrome 后继续运行后台应用」选项,同时在open_new前先执行一次杀残留Chrome进程的操作即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 23:36:03