source

subprocess.open과 subprocess.run의 차이점은 무엇입니까?

lovecheck 2023. 9. 19. 21:14
반응형

subprocess.open과 subprocess.run의 차이점은 무엇입니까?

저는 처음입니다.subprocess모듈과 설명서는 무엇이 다른지 궁금하게 만듭니다.subprocess.popen그리고.subprocess.run. 명령이 수행하는 작업에 차이가 있습니까?하나만 더 새것입니까?어느 것을 사용하는 것이 더 나을까요?

명령을 실행하고 끝날 때까지 기다리되 그 동안 다른 작업을 수행하지 않으려는 경우를 단순화하기 위해 Python 3.subprocess.run()5에 추가되었습니다.그 외의 경우는 여전히 다음을 사용해야 합니다.subprocess.Popen.

가장 큰 차이점은subprocess.run()명령을 실행하고 완료될 때까지 기다립니다.subprocess.Popen프로세스가 완료되는 동안 작업을 계속한 다음 자신에게 반복적으로 전화를 걸어 데이터를 프로세스에 전달하고 수신할 수 있습니다.두번째로.subprocess.run()답례품

subprocess.run()그냥 싸기만Popen그리고.Popen.communicate()따라서 데이터를 전달/receive하기 위해 루프를 만들거나 프로세스가 완료될 때까지 기다릴 필요가 없습니다.

공식 문서에서 어떤 매개 변수에 대한 정보를 확인합니다.subprocess.run()에게 전해 주다Popen그리고.communicate().

둘 다 파이썬에서 기본적으로 사용할 수 있습니다.

하위 프로세스를 호출하는 데 권장되는 접근 방식은 이 프로세스가 처리할 수 있는 모든 사용 사례에 대해 run() 함수를 사용하는 것입니다.보다 고급 사용 사례를 위해 기본적인 Popen 인터페이스를 직접 사용할 수 있습니다.

서브프로세스.실행:

import subprocess
import sys

result = subprocess.run([sys.executable, "-c", "print('ocean')"])

-Subprocess.open: subprocess로 여러 명령줄 실행, communication method는 프로세스가 완료될 때까지 기다렸다가 stdout과 stderr을 tuple로 최종 출력

EX:

import subprocess
process = subprocess.Popen(shell_cmd,
                     stdout = subprocess.PIPE, 
                     stderr = subprocess.PIPE,
                     text = True,
                     shell = True
                     )
std_out, std_err = process.communicate()
std_out.strip(), std_err

언급URL : https://stackoverflow.com/questions/39187886/what-is-the-difference-between-subprocess-popen-and-subprocess-run

반응형