ホームページ > バックエンド開発 > Python チュートリアル > Python 関数の実行をタイムアウトで中断するにはどうすればよいですか?

Python 関数の実行をタイムアウトで中断するにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2024-12-18 11:00:16
オリジナル
221 人が閲覧しました

How to Interrupt a Python Function Execution with a Timeout?

Python でのタイムアウトによる関数の中断

無期限に停止してスクリプトの実行が妨げられる可能性がある関数を呼び出す場合、次のことが必要になります。タイムアウトメカニズムを実装します。 Python の signal パッケージは、この問題の解決策を提供します。

主に UNIX システムで使用される signal パッケージを使用すると、特定の関数のタイムアウトを設定できます。関数が指定されたタイムアウトを超えると、シグナルが発生して実行が中断されます。

例:

無期限に実行される可能性がある関数loop_forever()を考えてみましょう。この関数を呼び出す必要がありますが、タイムアウトを 5 秒に設定します。関数に 5 秒以上かかる場合は、その実行をキャンセルします。

import signal

# Register a handler for the timeout
def handler(signum, frame):
    print("Timeout! Cancelling function execution.")
    raise Exception("Timeout exceeded!")

# Register the signal function handler
signal.signal(signal.SIGALRM, handler)

# Define a timeout of 5 seconds
signal.alarm(5)

try:
    loop_forever()
except Exception as e:
    print(str(e))
    
# Cancel the timer if the function finishes before timeout
signal.alarm(0)
ログイン後にコピー

この例では、5 秒後にハンドラー関数が呼び出され、例外が発生します。この例外は親コードでキャッチされ、タイマーがキャンセルされ、loop_forever() 関数の実行が終了します。

以上がPython 関数の実行をタイムアウトで中断するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート