[파이썬] subprocess 프로세스 간의 파이프라인 구축하기

파이프라인은 다양한 작업을 순서대로 처리하기 위한 방법 중 하나입니다.

Python의 subprocess 모듈을 사용하면 다른 프로세스와의 간단한 통신을 통해 파이프라인을 만들 수 있습니다. 이를 통해 데이터를 읽고 쓰는 작업을 병렬로 수행하거나 여러 프로세스 간에 작업을 분산시킬 수 있습니다.

이번 블로그 포스트에서는 subprocess를 사용하여 프로세스 간의 파이프라인을 구축하는 방법을 알아보겠습니다.

subprocess 모듈 소개

Python의 subprocess 모듈은 외부 프로그램을 실행하고 제어하는 데 사용됩니다. subprocess 모듈은 파이썬 자체 프로세스 외부에서 실행되는 다른 프로그램과 상호작용하기 위한 여러 함수 제공합니다.

파이썬에서는 subprocess 모듈을 사용하여 표준 입력과 출력을 사용하여 프로세스를 실행하고 통신할 수 있습니다.

파이프라인 구축하기

파이프라인은 일련의 프로세스가 데이터를 전달하고 결과를 받는 것입니다. 여기서는 프로세스 간 표준 입력과 출력을 사용하여 파이프라인을 구축하는 방법을 다루겠습니다.

예를 들어, 다음과 같이 두 개의 프로세스를 파이프라인으로 연결하여 구현할 수 있습니다.

import subprocess

# 첫 번째 프로세스 실행
p1 = subprocess.Popen(["cat", "input.txt"], stdout=subprocess.PIPE)

# 두 번째 프로세스 실행 (input.txt 파일의 내용을 대문자로 변환)
p2 = subprocess.Popen(["tr", "a-z", "A-Z"], stdin=p1.stdout, stdout=subprocess.PIPE)

# 결과 출력
output = p2.communicate()[0]

print(output)

위의 예제에서는 먼저 “cat input.txt” 명령어를 실행하여 input.txt 파일의 내용을 표준 출력으로 전달하는 첫 번째 프로세스를 실행합니다. 그런 다음 “tr a-z A-Z” 명령어를 실행하여 입력으로 받은 데이터를 대문자로 변환하는 두 번째 프로세스를 실행합니다.

두 번째 프로세스의 표준 출력은 파이프라인의 최종 결과입니다. p2.communicate()[0]을 사용하여 이 결과를 얻을 수 있습니다.

결론

Python의 subprocess 모듈을 사용하여 프로세스 간 파이프라인을 구축하는 방법을 알아보았습니다. 파이프라인을 사용하면 여러 작업을 병렬로 처리하거나 다른 프로세스 간 작업을 분산시킬 수 있습니다. 이를 통해 효율적이고 유연한 작업 처리를 구현할 수 있습니다.