>  기사  >  백엔드 개발  >  Python에서 프로세스 출력을 실시간으로 스트리밍하는 방법은 무엇입니까?

Python에서 프로세스 출력을 실시간으로 스트리밍하는 방법은 무엇입니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-10-29 04:15:29558검색

How to Stream Process Output in Real-Time in Python?

프로세스 실행 중 연속 출력 표시

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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