無限ループを簡易的にチェックする
Pythonを書いているときに無限ループを簡易的にチェックする方法を思い付いたのでメモ。 以下のように無限ループに陥ってしまったとします。
cond = True while cond: cond = True # いつまでたっても条件がFalseにならない print('hoge')
このとき、とりあえず本来のループ脱出条件は無視して無限ループから抜け出そうと思い、イテレータを使う方法を思い付きました。
cond = True limit = iter(range(10000)) while cond: next(limit) # 無限ループチェック cond = True # いつまでたっても条件がFalseにならない print('hoge')
このようにすれば、10001回目のループの先頭でStopIteration例外が発生して、無限ループから抜けることができます。
※range関数を使っていますが、Python2ではxrangeを使ったほうがよいでしょう。