最近在改進打卡腳本,突然有一天遇到了問題。腳本調用了過多的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)