>  기사  >  백엔드 개발  >  실행 중에 하위 프로세스 출력을 실시간으로 인쇄하는 방법은 무엇입니까?

실행 중에 하위 프로세스 출력을 실시간으로 인쇄하는 방법은 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2024-10-31 21:48:28835검색

How to Print Subprocess Output in Real-Time While It's Running?

프로세스가 실행 중일 때 하위 프로세스 출력을 지속적으로 인쇄

문제

Python의 하위 프로세스 모듈을 사용하여 시작된 프로그램의 경우 프로그램은 하위 프로세스의 실행이 완료될 때까지 기다려야 합니다. 출력에 액세스하기 전에. 이는 하위 프로세스가 완료될 때까지 프로그램이 계속되는 것을 방지하므로 장기 실행 프로세스에 불편할 수 있습니다.

해결책

하위 프로세스 출력의 실시간 인쇄를 활성화하려면 하위 프로세스의 출력 스트림을 사용할 수 있습니다. 이를 통해 프로그램은 출력 라인을 사용할 수 있게 되자마자 처리할 수 있습니다.

아래는 이 접근 방식을 보여주는 예입니다.

<code class="python">from __future__ import print_function  # Python 2.x compatibility

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)

# Example
for path in execute(["locate", "a"]):
    print(path, end="")</code>

이 반복 접근 방식을 활용하면 프로그램은 다음을 처리할 수 있습니다. 하위 프로세스가 사용 가능해지면 한 줄씩 하위 프로세스에서 출력하여 하위 프로세스가 실행되는 동안 실시간 출력 표시를 가능하게 합니다.

위 내용은 실행 중에 하위 프로세스 출력을 실시간으로 인쇄하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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