1

私は次のようなPythonスクリプトを持っています:

for x in range(1000,40000):
    try:
       some_function(x)
       some_other_function(x)
    except Exception, e:
       print e
       pass

このようなエラーを処理するのは良い習慣ではありませんが、これは1回だけ使用するスクリプトです。とにかく、ループが特定のID(x)でスタックし、数時間フリーズすることがあることに気付きました。

だから私の質問は:ループにタイムアウト関数を実装して、20秒以上かかる場合は次の関数にスキップするにはどうすればよいですか?

4

1 に答える 1

1

TimeoutExceptionとして定義できます

except TimeoutException, e:
print e
pass

20秒間だけ実行したい場合は、Pythonでシグナルハンドラーを作成することを検討することをお勧めします。例とそのPythonドキュメントへのリンクを次に示します。 https://docs.python.org/library/signal.html

https://web.archive.org/web/20130511171949/http://pguides.net/python-tutorial/python-timeout-a-function/

あなたはWindowsを使用しているので、この古いスレッド pythonを見てみたいと思うかもしれません:SIGALRMと同等のWindows

于 2012-07-12T16:25:00.813 に答える