解决selenium启用多个webdriver占用内存和端口的问题

最近在改进打卡脚本,突然有一天遇到了问题。脚本调用了过多的webdriver程序,导致内存占用率很高,导致我无法正常连接服务器,也无法执行脚本。

如图:

当时的解决方法:

查看进程,一个个用kill命令杀死

但是这样效率很低,而且每天我起床都要执行一次操作,否则第二天就又无法打卡

网上参考的命令是加上以下语句:

driver.quit()

如果是正常执行脚本的话这句话足够了,但是将脚本加入crontab定时自动设置多次执行,会导致出现内存占用没关闭webdriver的问题

解决方法:python脚本在开头加上自动kill进程的命令

import os
import re
import signal


# 要杀死程序名称,最好全名
program_name = "webdriver"
# 终端执行的命令
order_str = "ps -aux|grep %s" % program_name
# 执行
strs_obj = os.popen(order_str)
t_strs = strs_obj.read()
# 通过正则获取pid
pid_list = re.findall(r"(d+).+webdriver --port=d+", t_strs, re.I)
print(pid_list)
for j in pid_list:
    print(j)
    # 杀死进程
    os.kill(int(j), signal.SIGKILL)
原文地址:https://www.cnblogs.com/echoDetected/p/14225033.html