前提
Seleniumを使ったスクレイピングを趣味で行っています。
OSはUbuntu Server 22.04で、Raspberry Pi 4B にインストールして使っています。
バージョンはPython 3.8.10, Selenium 4.2.0です。
発生している問題・エラーメッセージ
Pythonスクリプトを起動した後はchromedriver関連のプロセスが6つ立ち上がっています。
driver.quit()で終了させた後も5つのプロセスが残っており、メモリを圧迫されます。
起動直後
$ python scraping.py $ ps -x ... 50723 ? Sl 0:00 /snap/chromium/2106/usr/lib/chromium-browser/chromedriver --port=52269 50791 ? Sl 0:04 /snap/chromium/2106/usr/lib/chromium-browser/chrome --allow-pre-commit-input --disable-background-networking --disable-client-side-phishing-detection --disable-default-apps --disable-dev-shm-usage --disable-g 50793 ? S 0:00 /snap/chromium/2106/usr/lib/chromium-browser/chrome --type=zygote --no-zygote-sandbox --no-sandbox --enable-logging --headless --log-level=0 --headless --user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) A 50794 ? S 0:00 /snap/chromium/2106/usr/lib/chromium-browser/chrome --type=zygote --no-sandbox --enable-logging --headless --log-level=0 --headless --user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (K 50808 ? Sl 0:01 /snap/chromium/2106/usr/lib/chromium-browser/chrome --type=gpu-process --no-sandbox --disable-dev-shm-usage --enable-logging --headless --log-level=0 --ozone-platform=headless --use-angle=swiftshader-webgl -- 50810 ? Sl 0:03 /snap/chromium/2106/usr/lib/chromium-browser/chrome --type=utility --utility-sub-type=network.mojom.NetworkService --lang=ja --service-sandbox-type=none --no-sandbox --disable-dev-shm-usage --enable-logging - 50847 ? Sl 0:24 /snap/chromium/2106/usr/lib/chromium-browser/chrome --type=renderer --headless --user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.79 Safari/537.36 - ...
$ ps -x 50791 ? Sl 0:04 /snap/chromium/2106/usr/lib/chromium-browser/chrome --allow-pre-commit-input --disable-background-networking --disable-client-side-phishing-detection --disable-default-apps --disable-dev-shm-usage --disable-g 50793 ? S 0:00 /snap/chromium/2106/usr/lib/chromium-browser/chrome --type=zygote --no-zygote-sandbox --no-sandbox --enable-logging --headless --log-level=0 --headless --user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) A 50794 ? S 0:00 /snap/chromium/2106/usr/lib/chromium-browser/chrome --type=zygote --no-sandbox --enable-logging --headless --log-level=0 --headless --user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (K 50808 ? Sl 0:01 /snap/chromium/2106/usr/lib/chromium-browser/chrome --type=gpu-process --no-sandbox --disable-dev-shm-usage --enable-logging --headless --log-level=0 --ozone-platform=headless --use-angle=swiftshader-webgl -- 50810 ? Sl 0:03 /snap/chromium/2106/usr/lib/chromium-browser/chrome --type=utility --utility-sub-type=network.mojom.NetworkService --lang=ja --service-sandbox-type=none --no-sandbox --disable-dev-shm-usage --enable-logging - 50847 ? Sl 0:24 /snap/chromium/2106/usr/lib/chromium-browser/chrome --type=renderer --headless --user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.79 Safari/537.36 -
該当のソースコード
Pythonスクリプトが途中終了しても正常にSeleniumを終了させるようにしています。
Python
1from selenium import webdriver 2 3options.add_argument('--headless') 4options.add_argument('--no-sandbox') 5options.add_argument('--disable-dev-shm-usage') 6options.add_argument('--disable-gpu') 7options.add_argument('--lang=ja-JP') 8options.add_argument(f'user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.79 Safari/537.36') #追加 9try: 10 driver = webdriver.Chrome(executable_path="/usr/bin/chromedriver", options=options) 11 (いろんな処理) 12 13finally: 14 driver.quit() 15 sys.exit()
試したこと
killall chromedriverでプロセスは落とせることは確認しましたが、2つ同時で別のスクリプトを起動させたいときに面倒なので個別で落とせるようにしたいです。

あなたの回答
tips
プレビュー