[Python] Windows 上で Firefox (+ Selenium) の ディスクアクセスを抑える
はじめに
筆者は、Windows11上でFirefoxをSeleniumで自動操作することがあります。
裏でその操作を立ち上げていると、System(プロセスID=4)のディスクアクセスが100%になってしまい、PCがまともに操作できないことがしばしばありました。
タスクマネージャーなどで確認すると、Sytemプロセスがディスクアクセスをしているとなっていた。
そのため、アクセスされているファイルがFirefoxのプロファイルにもかかわらず、OS側の問題と思い込んでいました。
最近、ようやくFirefoxの問題だと気が付き、幾つか試したところディスクキャッシュをオフにすることでディスクアクセスを抑えられる事が分かりました。
環境
エディション Windows 11 Pro
バージョン 21H2
OS ビルド 22000.556
エクスペリエンス Windows 機能エクスペリエンス パック 1000.22000.556.0
システムの種類 64 ビット オペレーティング システム、x64 ベース プロセッサ
Python 3.10.2 (tags/v3.10.2:a58ebcc, Jan 17 2022, 14:12:15) [MSC v.1929 64 bit (AMD64)]
Firefox 98.0.2 (64 ビット)
selenium 4.1.0
'moz:geckodriverVersion': '0.30.0'
対策: Firefoxのディスクキャッシュをオフにする
手動で変更する
Firefoxのディスクキャッシュを手動でオフにするには、以下の操作を行います。
- アドレスバーに
about:config
を入力する - 検索バーに
browser.cache.disk.enable
を入力する - その値を
false
にする - Firefoxを再起動する
SeleniumでディスクキャッシュをオフにしてFirefoxを起動させる
Seleniumで自動操作する場合は、プロファイルを指定して起動する必要があります。
例えば、以下のようにします。
import os.path
from selenium import webdriver
from selenium.webdriver.firefox.service import Service as FirefoxService
from selenium.webdriver.firefox.options import Options as FirefoxOptions
options = FirefoxOptions()
options.add_argument('-safe-mode')
options.set_preference("browser.cache.disk.enable", False)
service = FirefoxService(executable_path="geckodriver.exe", log_path=os.path.devnull)
driver = webdriver.Firefox(service=service, options=options)
driver.get("https://www.google.com/")
最後に
しばらくディスクキャッシュをオフにして使ってみましたが、明らかにディスクアクセスが減り快適になっています。
何故か、メモリ使用量も前より下がっているようです。
自分の環境だけかもしれませんが。
もともとメモリが心許ない環境なのでディスクアクセスが増える事もあるのですが、これは仕方がない気がします。
また、Windows11側の問題もある気がします。
Author And Source
この問題について([Python] Windows 上で Firefox (+ Selenium) の ディスクアクセスを抑える), 我々は、より多くの情報をここで見つけました https://zenn.dev/bluesilvercat/articles/b01e6ebbf0197f著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Collection and Share based on the CC protocol