Seleniumのプロセスが残ってタスクマネージャーに大量のChromeが発生する問題とその解決策

Python

今回は、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が重くなっている場合の対処法についても解説しました。ふだん何気なく使っているぶんには、そこまでメモリを気にすることはないかと思いますが、動きがもっさりしている、ページが読み込めないということがあれば、一度起動中のプロセスを確認して軽量化することをおすすめします。

chaso

文系出身、数字が苦手な平凡主婦。塾講師、大手企業SE、不動産事務、Webライター、QAエンジニアを経て現在RPAエンジニアとして働いています。機械音痴だけど効率化や自動化をこよなく愛しています!お仕事の依頼・ご相談は問い合わせよりお願いいたします♪

chasoをフォローする

コメント

タイトルとURLをコピーしました