프로세스 실행 중 연속 출력 표시
Python 스크립트에서는 하위 프로세스를 활용하여 외부 프로그램을 실행하는 경우가 많습니다. 이는 강력한 기능이지만 출력을 검색하기 전에 프로세스가 완료될 때까지 기다리는 것은 실망스러울 수 있습니다. 이 문제를 해결하기 위해 프로세스가 실행되는 동안 프로세스 출력을 지속적으로 스트리밍하는 방법을 살펴보겠습니다.
일반적으로 우리는 프로세스가 완료된 후 프로세스의 전체 출력을 캡처하기 위해 subprocess.communicate()를 사용합니다. 그러나 이 접근 방식을 사용하려면 출력이 표시되기 전에 프로세스가 완전히 완료되어야 합니다.
연속 출력을 활성화하려면 fd.readline()과 함께 iter 함수를 활용할 수 있습니다. 이를 통해 프로세스의 stdout 스트림을 반복하여 사용 가능한 줄을 캡처할 수 있습니다.
<code class="python">import subprocess def execute(cmd): popen = subprocess.Popen(cmd, stdout=subprocess.PIPE, universal_newlines=True) for stdout_line in iter(popen.stdout.readline, ""): yield stdout_line popen.stdout.close() return_code = popen.wait() if return_code: raise subprocess.CalledProcessError(return_code, cmd)</code>
이 향상된 버전에서는 사용 가능한 stdout의 각 줄을 생성합니다. 이를 통해 스크립트는 프로세스에 의해 생성된 출력을 연속적으로 표시할 수 있습니다.
다음은 예시입니다.
<code class="python">for path in execute(["locate", "a"]): print(path, end="")</code>
이 접근 방식을 사용하면 검색 쿼리와 일치하는 경로를 지속적으로 표시할 수 있습니다. "a"는 "locate" 명령으로 발견되어 프로세스 진행 상황에 대한 실시간 피드백을 제공합니다.
이 기술을 사용하면 지속적인 출력 모니터링이 가능해 스크립트의 상호 작용성과 사용자 경험이 향상됩니다. 외부 프로세스를 시작합니다.
위 내용은 Python에서 프로세스 출력을 실시간으로 스트리밍하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!