> 백엔드 개발 > 파이썬 튜토리얼 > 시간 초과로 인해 Python 함수가 무기한 정지되는 것을 어떻게 방지할 수 있습니까?

시간 초과로 인해 Python 함수가 무기한 정지되는 것을 어떻게 방지할 수 있습니까?

DDD
풀어 주다: 2024-12-24 00:55:09
원래의
951명이 탐색했습니다.

How Can I Prevent Indefinitely Halting Python Functions with a Timeout?

함수 호출 시간 초과

스크립트 실행을 무기한 중단할 수 있는 Python 함수를 호출할 때 다음을 수행하는 메커니즘을 설정해야 합니다. 그것을 방지하십시오. 해결책은 스크립트가 개입하여 기능을 종료하는 시간 초과 임계값을 설정하는 것입니다.

Signal 패키지 사용

UNIX 기반 시스템의 경우 signal 패키지 강력한 솔루션을 제공합니다. 활용하려면:

  1. 신호 패키지 가져오기: 신호 가져오기
  2. 시간 초과 시 호출할 핸들러 함수를 정의하세요. 이 함수는 프로세스를 종료하기 위해 예외를 발생시켜야 합니다.
  3. 시간 초과 기간을 지정하려면 signal.alarm() 함수를 사용하세요.
  4. signal.signal(signal.SIGALRM을 사용하여 SIGALRM 신호 처리기를 설정하세요. , 핸들러).
  5. try 블록 내에서 지연 가능성이 있는 함수를 호출합니다. 시간 초과가 발생하면 핸들러 예외가 발생합니다.
  6. 원하는 경우 할당된 시간 내에 함수가 완료되면 signal.alarm(0)을 사용하여 타이머를 취소하세요.

다음은 예시입니다:

import signal

# Handler function
def handler(signum, frame):
    print("Timeout reached!")
    raise Exception("Timeout exception")

# Function that may stall indefinitely
def loop_forever():
    while True:
        print("Looping")
        # Pause execution for 1 second
        time.sleep(1)

# Set timeout to 5 seconds
signal.alarm(5)
signal.signal(signal.SIGALRM, handler)

try:
    loop_forever()
except Exception as exc:
    print("Exception:", exc)
로그인 후 복사

loop_forever() 함수가 5초 이내에 완료되지 않으면 핸들러 함수가 호출되어 시간 초과 예외가 발생하고 프로세스가 종료됩니다.

위 내용은 시간 초과로 인해 Python 함수가 무기한 정지되는 것을 어떻게 방지할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿