서브프로세스 실행 방법과 오류 해결 방법을 간단히 설명: subprocess run
The subprocess 모듈: 파이썬을 사용한 프로그램 래핑
이안 커리에 의해 작성 중급 레벨
파이썬 subprocess
모듈은 명령 줄 스크립팅을 단순화하거나 명령 줄 응용 프로그램뿐만 아니라 어떤 응용 프로그램과도 함께 파이썬을 사용하고자 한다면 도움이 될 수 있습니다. 셸 명령 실행, 명령 줄 응용 프로그램 실행 및 GUI 응용 프로그램 시작까지 파이썬 subprocess
모듈은 도움을 줄 수 있습니다.
이 자습서의 끝까지 따라오면 다음을 할 수 있게 됩니다:
- 파이썬
subprocess
모듈이 운영 체제와 상호 작용하는 방식 이해하기 ls
또는dir
과 같은 셸 명령 실행하기- 프로세스에 입력 제공하고 출력 사용하기
subprocess
를 사용할 때 오류 처리하기- 실제 예제를 고려하여
subprocess
의 사용 사례 이해하기
이 자습서에서는 subprocess
모듈을 시작하기 전에 프로세스, 서브 프로세스 및 파이썬을 이해하기 위한 상위 수준의 이해 모델을 얻은 다음 예제로 실험하고 subprocess
모듈을 살펴보게 될 것입니다. 그 후에는 셸을 탐색하고 Windows 및 UNIX 기반의 쉘과 시스템에서 파이썬의 subprocess
를 활용하는 방법을 배우게 됩니다. 특히 프로세스와의 통신, 파이프 및 오류 처리에 대해 알아볼 것입니다.
참고: subprocess
는 GUI 자동화 모듈이나 동시성 달성 방법이 아닙니다. GUI 자동화를 위해서는 PyAutoGUI를 살펴보는 것이 좋습니다. 동시성을 위해서는 이 자습서의 subprocess
와 관련된 모듈 섹션을 참조하십시오.
기본 사항을 익힌 후에는 파이썬을 활용하는 몇 가지 실용적인 아이디어를 탐구하게 될 것입니다.
처리 및 서브프로세스
운영 체제와 프로세스
- 컴퓨터의 운영 체제는 실행 중인 여러 프로세스를 관리합니다.
- 각 프로세스는 운영 체제의 활성 프로세스로 표현됩니다.
- 각 프로세스는 고유한 식별자인 프로세스 ID(PID)와 연결됩니다.
프로세스 생명주기
- 프로세스의 생명주기에는 다음 단계가 있습니다:
- 생성(Created): 프로세스가 생성되고 리소스가 할당됩니다.
- 실행(Running): 프로세스가 실행되고 CPU에 바운드됩니다.
- 중지(Terminated): 프로세스가 종료되고 리소스가 해제됩니다.
시스템에서 실행 중인 활성 프로세스
- 현재 시스템에서 실행 중인 활성 프로세스를 확인할 수 있습니다.
파이썬 subprocess 모듈 개요
- 파이썬의
subprocess
모듈은 다른 프로그램과 상호 작용할 수 있는 강력한 도구입니다. subprocess
모듈은 다른 프로그램을 실행하고 그와 통신할 수 있도록 도와줍니다.subprocess
모듈은 서브프로세스 생성, 입출력 관리, 오류 처리 등의 작업을 수행할 수 있습니다.
파이썬 subprocess 모듈의 기본 사용법
Timer 예제
subprocess
를 사용하여 타이머 프로그램을 실행하는 예제입니다.
subprocess를 사용하여 어떤 앱도 실행하기
subprocess
를 사용하여 어떤 응용 프로그램이든 실행할 수 있습니다.- 예제에서는 텍스트 편집기 애플리케이션을 실행하는 방법을 보여줍니다.
CompletedProcess 객체
CompletedProcess
객체를 사용하여 결과 및 상태 정보를 가져올 수 있습니다.- 예제에서는 완료된 프로세스의 출력을 확인하는 방법을 보여줍니다.
subprocess 예외 처리
CalledProcessError: 0이 아닌 종료 코드에 대한 예외
- 0이 아닌 종료 코드를 반환하는 경우
CalledProcessError
예외가 발생합니다.
TimeoutExpired: 시간이 너무 오래 걸리는 프로세스에 대한 예외
- 너무 오래 실행되는 프로세스에 대해
TimeoutExpired
예외가 발생합니다.
FileNotFoundError: 존재하지 않는 프로그램에 대한 예외
- 존재하지 않는 프로그램을 실행하려고 할 때
FileNotFoundError
예외가 발생합니다.
예외 처리 예제
- 예외 처리의 예를 보여주는 예제입니다.
셸과 텍스트 기반 프로그램 소개
셸과 subprocess의 사용 사례
- 셸과 subprocess의 사용 사례에 대해 알아봅니다.
UNIX 기반 셸에서의 subprocess의 기본 사용법
- UNIX 기반 셸에서 subprocess를 사용하는 기본적인 방법에 대해 알아봅니다.
Windows 셸에서의 subprocess의 기본 사용법
- Windows 셸에서 subprocess를 사용하는 기본적인 방법에 대해 알아봅니다.
보안 경고
- 셸을 사용할 때 특정 보안 상황에 유의해야 합니다.
프로세스와의 통신
표준 I/O 스트림
- 프로세스와 통신하기 위해 표준 I/O 스트림을 사용할 수 있습니다.
Magic Number 생성기 예제
- 표준 입출력을 사용하여 Magic Number 생성기를 실행하는 예제입니다.
표준 스트림의 디코딩
- 표준 스트림의 디코딩을 수행하는 방법입니다.
Reaction Game 예제
- 표준 입출력을 사용하여 Reaction Game을 실행하는 예제입니다.
파이프와 셸
파이프 소개
- 파이프에 대한 소개입니다.
subprocess의 파이프
- subprocess에서 파이프를 사용하는 방법에 대한 소개입니다.
run()을 사용한 파이프 시뮬레이션
- run()을 사용하여 파이프를 시뮬레이션하는 방법에 대한 예제입니다.
실용적인 아이디어
- 예제를 통해 새로운 프로젝트를 만드는 방법을 알아봅니다.
subprocess와 관련된 파이썬 모듈
- subprocess와 관련된 파이썬 모듈에 대한 소개입니다.
Popen 클래스
Popen() 사용하기
- Popen()을 사용하여 프로세스를 실행하는 방법에 대한 예제입니다.
파이프를 사용하여 두 프로세스 연결하기
- 파이프를 사용하여 두 프로세스를 연결하는 방법에 대한 예제입니다.
프로세스와 동적으로 상호 작용하기
- 프로세스와 동적으로 상호 작용하는 방법에 대한 예제입니다.
결론
이번 자습서를 통해 파이썬 subprocess
모듈을 사용하여 명령 줄 스크립트를 단순화하거나 다른 응용 프로그램과 함께 파이썬을 사용하는 방법에 대해 배웠습니다. 이제 실제 응용 프로그램에 적용할 수 있는 여러 가지 아이디어를 고려할 수 있게 되었습니다.
서브프로세스의 실행, 입출력 관리, 오류 처리 등의 작업에 대해 자세히 설명하고 있으며, 예제와 함께 단계별로 실행 가능한 코드와 설명을 제공합니다.