Python スクレイピング

Python3 RecursionError: maximum recursion depth exceeded

投稿日:2017年11月14日 更新日:

再起処理の自作URLクローラーを夜回したら、朝起きたら落ちていた。

  File "/usr/lib/python3.5/threading.py", line 224, in __init__
 self._release_save = lock._release_save
RecursionError: maximum recursion depth exceeded

 

公式ドキュメントによると、組み込み例外というらしい。

https://docs.python.jp/3/library/exceptions.html

exception RecursionError(原文)
この例外は RuntimeError を継承しています。インタープリタが最大再帰深度 (sys.getrecursionlimit() を参照) の超過を検出すると送出されます。

対策はhttps://qiita.com/narupo/items/e25ac05a9065c0bd9c03 に出ていた。

import sys
sys.setrecursionlimit(10000)

上限はいくつなんだろう?

sys.setrecursionlimit(limit)(原文)
Python インタプリタの、スタックの最大の深さを limit に設定します。この制限は Python プログラムが無限に再帰し、 C スタックがオーバーフローしてクラッシュすることを防止するために設けられています。

limit の最大値はプラットフォームによって異なります。深い再帰処理が必要な場合にはプラットフォームがサポートしている範囲内でより大きな値を指定することができますが、この値が大きすぎればクラッシュするので注意が必要です。

 

-Python, スクレイピング

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

no image

python3のloggingを呼ぶための自作logger.pyは作るときにハマったこと

python3 の標準ログ出力モジュールであるlogging。 これを自作のlogger.pyにあるgetLoggerから返そうとした。 loggerの取得を共通関数化したかったからです。 すると、メ …

no image

Ubuntu16.04にPython3環境を構築する

Ubuntu16.04をインストールしたら、この順でやっていこう。 1.aptのパッケージリスト最新化 $ sudo apt update   2.Python3の最新化 $ sudo ap …

no image

Ubuntu 16.04にPyCharm 2017.2.4をインストールする

PyCharm 2017.2.4をダウンロードする http://www.jetbrains.com/pycharm/download/download-thanks.html?platform=li …

no image

PythonでHello World!

Pythonファイルの拡張子は「.py」 Pythonファイルは「.py」で保存する。 例)helloworld.py 文字出力は print(‘出力する文字’) 例)prin …

no image

スクレイピングで使用するlinuxコマンド

wget ファイルをダウンロードする $ wget http://www.yahoo.co.jp/ オプション 意味 例 -P 保存先ディレクトリを指定する wget -P dataset bzcat …