【发布时间】:2018-12-07 08:54:22
【问题描述】:
大家好!我已经遇到这个问题一周了,但我认为我无法解决它,而且我也没有看到任何基于在线文章的解决方案。希望有人可以在这里帮助我...
我的场景: 我需要监控一个页面中 6 个不同表格的价格,这些表格几乎每秒都在变化。一天结束时,我会关闭浏览器(通过按 X 按钮)并终止脚本(通过按 Control+C),然后在早上再次运行并让它运行一整天。该脚本是用 python 编写的,并使用 selenium 来读取价格。我使用的浏览器是 Chrome。我的操作系统是 Windows 2008 R2; Selenium 版本是 3.14.1
这里是部分代码。它只是在以 1 秒为间隔的无限循环中使用 find_elements_by_id 简单地读取表格中的价格。
While True:
close1 = float(browser.find_element_by_id('bnaBox1').find_elements_by_id('lastprc1')[0].text.encode('ascii','ignore'))
close2 = float(browser.find_element_by_id('bnaBox2').find_elements_by_id('lastprc2')[0].text.encode('ascii','ignore'))
close3 = float(browser.find_element_by_id('bnaBox3').find_elements_by_id('lastprc3')[0].text.encode('ascii','ignore'))
close4 = float(browser.find_element_by_id('bnaBox4').find_elements_by_id('lastprc4')[0].text.encode('ascii','ignore'))
close5 = float(browser.find_element_by_id('bnaBox5').find_elements_by_id('lastprc5')[0].text.encode('ascii','ignore'))
close6 = float(browser.find_element_by_id('bnaBox6').find_elements_by_id('lastprc6')[0].text.encode('ascii','ignore'))
time.sleep(1)
...
在运行的最初几分钟内,脚本消耗的 CPU 最少(大约 20~30%),但再过几分钟,消耗会慢慢上升到 100%!机器中除了脚本没有运行其他进程。
到目前为止我已经解决了问题(他们都没有解决我的问题)
- 已将我的 chrome 升级到最新版本 - v71 和 chromerdriver 2.44
- 将 Chrome 回滚到以前的版本(v62、v68、v69、v70)
- 将 Chromedriver 版本回滚到 2.42 和 2.43
- 清除了我的 %TEMP% 文件 -
- 重启机器(多次)
该程序仅获取表中的值,但我怀疑在后台某处,当脚本运行时,不必要的数据堆积,导致 CPU 达到上限。
希望有人能帮我找出导致 CPU 出现此问题的原因并解决此问题。
【问题讨论】:
-
在任务管理器中哪个应用占用高CPU?
-
Chrome.exe 位于任务管理器的顶部,消耗了大部分 cpu。它们消耗大约 30% ~ 50%。
标签: python selenium google-chrome selenium-chromedriver cpu-usage