Python Selenium爬虫导致CPU飙升的定时任务陷阱与优化

Noah
Noah
发布时间:2026-10-14| 5人浏览过
原创

本文分析使用Python Selenium结合多线程执行定时任务时,因频繁启动浏览器实例导致CPU占用率飙升至90%以上的问题。通过展示基于threading.Timer的简易定时代码,指出其潜在性能瓶颈,并探讨如何优化资源占用以避免系统卡顿,适用于需要长期运行的自动化爬虫场景。

Selenium多线程定时任务引发的性能危机

当前场景涉及启动一个基于Selenium的爬虫程序,技术栈采用Firefox驱动配合多线程机制。通常情况下,电脑管家监控下的CPU占用率维持在20%左右。然而,一旦启动Selenium并持续进行浏览器实例创建与多线程操作,资源消耗将急剧变化。

运行约5分钟后,CPU占用率迅速攀升至90%以上,导致电脑响应极度迟缓,甚至接近死机状态。尽管定时程序仍在后台运行,但系统已处于类似待机的低效状态,严重影响正常使用。

面对电脑卡死的状况,用户的直观反应往往是抱怨设备性能不足,质疑为何如此简单的程序无法流畅运行,进而对前期投入的大量代码开发工作产生挫败感。

接下来展示相关代码实现,具体功能细节建议读者查阅官方文档或相关技术资料进行深入理解。

简易定时任务代码实现


from datetime import datetime
from threading import Timer
import time

# 定时任务
def task():
  print(datetime.now().strftime("%Y-%m-%d %H:%M:%S"))

def timedTask():
  '''
  第一个参数: 延迟多长时间执行任务(秒)
  第二个参数: 要执行的函数
  第三个参数: 调用函数的参数(tuple)
  '''
  Timer(5, task, ()).start()

while True:
  timedTask()
  time.sleep(5)

上述代码仅7行,看似简洁优雅。其“优雅”主要体现在代码量少、编写轻松,但这并未解决核心性能问题。


2020-06-05 14:06:39
2020-06-05 14:06:44
2020-06-05 14:06:49
2020-06-05 14:06:54
2020-06-05 14:06:59
2020-06-05 14:07:04
2020-06-05 14:07:09
2020-06-05 14:07:14
2020-06-05 14:07:19
2020-06-05 14:07:24

以上内容为本文主要分享,旨在为读者提供学习参考,欢迎持续关注本站获取更多技术资讯。

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。