함수 호출의 실행 시간 제한
코드에서 간헐적으로 확장된 차단을 나타내는 소켓 관련 함수 호출을 발견했습니다. 때때로 몇 시간에 도달합니다. 이는 받아들일 수 없는 상황을 초래합니다. 이 문제를 완화하려면 코드 내에서 함수의 실행 시간을 제한하는 솔루션을 찾으세요.
허용된 답변에서 제안한 것처럼 다른 스레드를 사용하면 솔루션이 제공될 수 있습니다. 그러나 향상된 접근 방식은 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!")
이 접근 방식을 사용하면 블록 내에서 시간 초과를 더 우아하게 처리할 수 있으며 함수가 초과하는 경우 TimeoutException이 발생합니다. 지정된 시간 제한
위 내용은 Python에서 차단 함수 호출의 실행 시간을 제한하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!