>백엔드 개발 >파이썬 튜토리얼 >Python에서 하위 프로세스 호출에 시간 초과를 어떻게 추가할 수 있나요?

Python에서 하위 프로세스 호출에 시간 초과를 어떻게 추가할 수 있나요?

DDD
DDD원래의
2024-12-14 02:33:09178검색

How Can I Add a Timeout to Subprocess Calls in Python?

시간 초과 기능이 있는 하위 프로세스 모듈 활용

하위 프로세스가 사전 정의된 시간 내에 실행을 완료해야 하는 필요성은 프로그래밍에서 자주 발생합니다. subprocess 모듈은 명령 실행을 위한 강력한 메커니즘을 제공하지만 본질적으로 시간 초과 기능이 부족합니다.

이러한 제한을 해결하기 위해 Python 3.3 이상에서는 subprocess 모듈 내에 check_output 함수를 제공합니다. 이 함수는 명령에서 stdout 데이터를 가져올 뿐만 아니라 프로세스가 지정된 시간 초과를 초과할 때 예외를 발생시킵니다.

from subprocess import STDOUT, check_output

# Set the timeout in seconds
timeout = 5

try:
    # Execute the command with the specified timeout
    output = check_output(cmd, stderr=STDOUT, timeout=timeout)
except CalledProcessError as e:
    # Handle the error if the process fails with a non-zero exit status
    pass

# Process the merged stdout/stderr data contained in the output variable

이 코드에서 시간 초과 변수는 명령에 허용되는 최대 실행 시간을 결정합니다. check_output은 프로세스가 종료되고 지정된 기간 내에 결합된 stdout/stderr 출력을 반환하도록 보장합니다.

또는 Python 2.x 사용자의 경우 subprocess 모듈의 subprocess32 백포트가 동일한 기능을 제공합니다. 이 백포트는 check_output과 동등한 솔루션을 제공하여 Python 2.x에서 시간 초과 인식 명령 실행을 허용합니다.

위 내용은 Python에서 하위 프로세스 호출에 시간 초과를 어떻게 추가할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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