>백엔드 개발 >파이썬 튜토리얼 >Python에서 함수 시간 초과를 어떻게 적절하게 처리할 수 있습니까?

Python에서 함수 시간 초과를 어떻게 적절하게 처리할 수 있습니까?

Linda Hamilton
Linda Hamilton원래의
2024-12-20 22:44:09808검색

How Can I Gracefully Handle Function Timeouts in Python?

Python의 함수 시간 초과 처리

무기한 실행될 수 있는 함수를 호출하거나 스크립트 종료가 필요한 문제가 발생할 때 시간 초과 메커니즘이 유용합니다. . Python에서는 다음 방법을 활용하여 함수 시간 초과를 적절하게 처리할 수 있습니다.

signal 모듈 사용:

UNIX 시스템에서 실행하는 경우 signal 패키지는 다음을 제공합니다. 시간 초과를 처리하는 방법. 타임아웃 핸들러를 등록하면 미리 정해진 시간 제한을 초과하는 경우 함수 실행을 취소할 수 있습니다. 다음은 signal을 사용한 예입니다.

import signal

# Register a handler for the timeout
def handler(signum, frame):
    print("Forever is over!")
    raise Exception("end of time")

# Define a potentially long-running function
def loop_forever():
    import time
    while 1:
        print("sec")
        time.sleep(1)

# Set up the signal handler
signal.signal(signal.SIGALRM, handler)

# Define the timeout duration (in seconds)
timeout = 10
signal.alarm(timeout)

# Attempt to execute the function
try:
    loop_forever()
except Exception as exc:
    print(exc)

# Cancel the timeout after the function completes
signal.alarm(0)

loop_forever() 함수가 10초 제한 시간을 초과하면 핸들러 함수가 호출되어 기본 코드에서 처리할 수 있는 예외가 발생합니다.

참고:

신호 모듈을 주의해서 사용하는 것이 중요합니다. 스레드로부터 완전히 안전하지 않으므로 다중 스레드 애플리케이션에서는 사용하지 않는 것이 가장 좋습니다.

위 내용은 Python에서 함수 시간 초과를 어떻게 적절하게 처리할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.