1. 程式人生 > 實用技巧 >解決selenium啟用多個webdriver佔用記憶體和埠的問題

解決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)