ホームページ >バックエンド開発 >Python チュートリアル >Python で関数呼び出しをブロックするための時間制限を実装するにはどうすればよいですか?

Python で関数呼び出しをブロックするための時間制限を実装するにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-11-20 02:20:011008ブラウズ

How Can I Implement Time Limits for Blocking Function Calls in Python?

関数呼び出しの時間制限の実装

特定のシナリオでは、コード内の関数呼び出しが予期せずブロックされ、許容できない遅延が発生することがあります。この問題は、関数が外部モジュールから生成され、その実行に対する制御が制限されている場合に発生します。この問題に対処するには、関数の実行時に時間制限を導入することが不可欠です。

効果的な解決策の 1 つは、別のスレッドを使用することです。タイムアウト関数を使用すると、元の関数呼び出しの最大実行時間を指定できます。この制限時間を超えると例外が発生し、状況を適切に処理できるようになります。

次の改良された実装では、with ステートメントを使用した明確かつ簡潔なアプローチが提供されます。

import signal
from contextlib import contextmanager

class TimeoutException(Exception): pass

@contextmanager
def time_limit(seconds):
    def signal_handler(signum, frame):
        raise TimeoutException("Timed out!")
    signal.signal(signal.SIGALRM, signal_handler)
    signal.alarm(seconds)
    try:
        yield
    finally:
        signal.alarm(0)

try:
    with time_limit(10):
        long_function_call()
except TimeoutException as e:
    print("Timed out!")

この手法を利用すると、関数呼び出しの実行時間を効果的に制限し、過度の遅延を防ぎ、制御された応答性の高いアプリケーションを確保できます。

以上がPython で関数呼び出しをブロックするための時間制限を実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。