最近在改进打卡脚本,突然有一天遇到了问题。脚本调用了过多的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)