今回は、chromedriver×Seleniumでブラウザを起動したあとに、プロセスが残る問題について解説します。
何度もプログラムを実行しているうちに、プロセスが増えてメモリを消費してしまう事象について、画面上でプロセスを終了する方法と、ソースコード内でプロセス管理をする方法をそれぞれ解説します。
Chromeのタスクマネージャーから確認する
Windows標準のタスクマネージャーでは、どれがchromedriverで起動したタスクか分かりません。そのため、Chromeのタスクマネージャーから確認するようにします。
Google Chromeを開き、右上の3点マーク>その他のツール>タスク マネージャ を選択します。
別ウインドウでGoogle Chromeのタスクマネージャーが開きます。
タスクのなかに「サブフレーム」というものがあるかと思います。サブフレームというのは、サイト分離という機能によって異なるプロセスでchromeを立ち上げたときの画面です。
chromedriverでブラウザを立ち上げるごとに、サブフレームが立ち上がります。このプロセスを終了することでchromedriverから起動したブラウザのタスクを終了することができます。
ソースコード内でプロセスを終了する
ブラウザを閉じたあとにプロセスを終了するようにするには、driver.quit()を使います。
from selenium import webdriver
# ブラウザを起動
driver = webdriver.Chrome()
# Googleを開く
driver.get('https://www.google.com/?hl=ja')
# ここにやりたい処理を書く
# ブラウザを閉じる
driver.quit()
driver.close()でもブラウザを閉じることができますが、プロセスが残らないようにするにはquit()を使う必要があります。
エラーで落ちたときもプロセスを終了するようにする
先ほどのソースコードでは、正常に処理が実行された場合はプロセスを終了できますが、途中で例外などのエラーで処理が落ちたときにプロセスが残ったままになります。
エラー発生時も必ずプロセスを終了する場合は、以下のように記述します。
from selenium import webdriver
try:
# ブラウザを起動
driver = webdriver.Chrome()
# Googleを開く
driver.get('https://www.google.com/?hl=ja')
# ここにやりたい処理を書く
finally:
# ブラウザを閉じる(エラーが起きても起きなくても必ず実行される)
driver.quit()
そもそもChromeのプロセスが多い場合は?
そもそも、Chromeのプロセスが大量にある、Chromeそのものが重いという場合には、以下の原因が考えられます。
タブの開きすぎ
調べ物の際や、何か作業をするなかでタブが大量になり、Chromeが重くなっている場合があります。
先ほど紹介したGoogle Chromeのタスクマネージャーでは、タブごとのメモリ使用量がわかります。単にタブを消していっても良いですが、調べ物をしているときはどのタブも消したくないということもあるかと思います。メモリ使用量の多いタブに絞って閉じることで、対応する範囲を最小限にとどめることができます。
拡張機能
拡張機能がメモリを消費している場合もあります。
Google Chromeのタスクマネージャーを開き、先頭に「拡張機能」とついているものを確認します。使っていないものは削除しましょう。たまに使うけど常に使っているわけではない場合、拡張機能をオフにしておくと良いです。
拡張機能をオフにする手順
まず、どの拡張機能がメモリを多く消費しているかを確認します。
Google Chromeのタスクマネージャーを開きます(開き方は前述)。以下を見てみると、Selenium IDEが桁違いにメモリを消費していることが分かります。
Selenium IDEは、ブラウザ操作の記録・再生ツールであり、頻繁に使っていないので無効化しておこうと思います。
無効化したい拡張機能をダブルクリックします。
ONになっている箇所をオフにします。
これで、インストール済のままいったん機能を停止することができます。使いたい場合は再度ONにするだけでOKです。
まとめ
今回は、chromedriver×Seleniumでブラウザを起動したあとに、プロセスが残る問題について解説しました。
プログラムを実行する際に必ずプロセスを終了するようにしておくことで、プロセスが残らず終了できることがわかりました。
また、その他の原因でGoogle Chromeが重くなっている場合の対処法についても解説しました。ふだん何気なく使っているぶんには、そこまでメモリを気にすることはないかと思いますが、動きがもっさりしている、ページが読み込めないということがあれば、一度起動中のプロセスを確認して軽量化することをおすすめします。
コメント