Python의 하위 프로세스 모듈 및 시간 초과
하위 프로세스 모듈은 외부 명령을 실행하고 출력을 캡처하며 수명 주기를 관리하는 편리한 방법을 제공합니다. 그러나 기본적으로 해당 통신() 메서드는 시간 초과를 지원하지 않습니다. 이는 호출 프로세스를 잠재적으로 교착 상태에 빠뜨릴 수 있는 장기 실행 명령을 실행할 때 문제가 됩니다.
check_output으로 시간 초과 구현
Python 3.3 이상에서는 check_output()을 다음과 같이 제공합니다. Popen() 및 communications()에 대한 더 효율적인 대안입니다. 이 함수는 명령을 평가하고 해당 stdout 및 stderr 출력을 바이트 문자열로 병합하며 명령이 0이 아닌 상태로 종료되면 CalledProcessError를 발생시킵니다. 결정적으로 타임아웃도 지원하므로 명령의 최대 실행 시간을 지정할 수 있습니다.
from subprocess import STDOUT, check_output seconds = 10 # Timeout in seconds output = check_output(cmd, stderr=STDOUT, timeout=seconds)
이 예에서 check_output() 함수는 cmd에 지정된 명령을 실행하고 완료될 때까지 기다립니다. 10초 이내. 명령이 10초보다 오래 걸리면 TimeoutExpired 오류가 발생합니다.
Python 2.x에서 시간 초과에 subprocess32 사용
Python 2.x의 경우 subprocess32 백포트는 Python 3.3의 check_output()과 동일한 시간 초과 기능을 제공합니다. subprocess32를 설치하려면 pip를 사용하십시오.
pip install subprocess32
설치한 후에는 subprocess32의 call() 함수를 사용하여 시간 제한이 있는 명령을 실행할 수 있습니다.
import subprocess32 seconds = 10 # Timeout in seconds subprocess32.call(cmd, timeout=seconds)
추가 고려 사항
위 내용은 Python의 `subprocess` 모듈을 사용할 때 시간 초과를 어떻게 구현할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!