코드에서 때때로 허용할 수 없는 기간 동안 차단되는 외부 모듈의 소켓 관련 함수 호출이 발생합니다. 이 함수 호출의 실행 시간을 제한하는 솔루션을 찾고 있습니다. 실행 가능한 접근 방식은 다른 스레드를 활용하는 것입니다.
허용된 답변의 개선된 버전은 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!")
이 코드를 통합하면 다음이 가능합니다. 함수 호출에 대한 시간 제한을 관리하고 시간 초과 예외를 효과적으로 처리합니다.
위 내용은 차단을 방지하기 위해 함수 호출에 대한 시간 제한을 어떻게 구현합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!