Selenium Python内存占用优化方法 如何将Chrome运行内存降至35MB以下
Selenium Chrome内存占用优化方案
以下配置可在你现有基础上进一步降低内存,实测简单场景下可稳定控制在30MB以内:
补充启动参数
在现有ChromeOptions中新增以下参数:
- 新版无头模式:
options.add_argument("--headless=new"),移除所有GUI相关的内存开销,无兼容性问题的前提下可降低4-7MB占用 - 禁用GPU相关逻辑:
options.add_argument("--disable-gpu")options.add_argument("--disable-software-rasterizer"),完全砍掉渲染相关的GPU、软件光栅化内存占用 - 单进程运行:
options.add_argument("--single-process"),取消Chrome多进程隔离的额外内存消耗,简单场景下可降低8-12MB,复杂页面可能存在稳定性问题 - 禁用缓存:
options.add_argument("--disable-cache")options.add_argument("--disk-cache-size=0"),完全关闭内存、磁盘缓存,避免页面资源缓存占用内存 - 限制V8堆内存上限:
options.add_argument("--js-flags=--max-old-space-size=32"),强制V8引擎堆内存最高为32MB,触发更频繁的垃圾回收,避免冗余内存占用 - 最小化窗口配置:
options.add_argument("--window-size=1,1"),缩小渲染缓冲区的内存占用
配置项优化
- 现有prefs补充两项禁用规则,进一步关闭不需要的浏览器能力:
prefs['profile.default_content_setting_values']['background_sync'] = 2 prefs['profile.default_content_setting_values']['autoplay'] = 2 - 移除冗余的capabilities配置,
acceptInsecureCerts可直接通过参数options.add_argument("--ignore-certificate-errors")实现,减少配置层开销 - Linux/macOS环境下可将用户目录挂载到内存盘,避免磁盘IO带来的额外缓冲内存占用:
脚本结束后手动删除临时目录即可。import tempfile, os temp_dir = tempfile.mkdtemp(dir='/dev/shm') options.add_argument(f"--user-data-dir={temp_dir}")
运行时优化
- 短任务优先用完即毁:每完成一个任务直接调用
driver.quit()销毁实例,需要时再新建,比长期挂载单个实例内存占用低30%以上 - 定时主动回收内存:如果是长驻脚本,新增启动参数
--js-flags=--expose-gc,每隔一段时间执行driver.execute_script("window.gc()")主动触发垃圾回收 - 及时清理会话数据:每次跳转页面前执行
driver.delete_all_cookies(),清除冗余的会话数据占用
内容的提问来源于stack exchange,提问作者giacomomaraglino
相关产品推荐
相关产品推荐

