본문 바로가기
Development/Python

Python Subprocess

by 곽동현 IMCOMKING 2020. 8. 13.

Subprocess VS Multi-process

Subprocess는 python으로 다른 프로그램을 실행하기 위한 기능이다. 즉 단순히 system command를 실행하기 위함이라고 이해할 수 있다. 따라서 subprocess로 실행된 프로그램과는 오직 stdin/stdout만으로 통신 할 수 밖에 없다.
반대로 multiprocess는 python 내에서 task를 쪼개 여러 cpu에서 실행하며, 좀 더 communication이 용이하다.


Subprocess로 System Command 실행하기

python에서 command line으로 명령을 내리는 방법은 os.system()을 이용하는 방법과, subprocess를 이용하는 방법 두가지가 있다. 그러나 여러가지 이유로 os.system()보다는 subprocess를 이용하는 것이 훨씬 더 많은 기능을 제공하고, 더 권장되는 방법이다.


사용예시

subprocess 명령어는 윈도우에서 커맨드라인 명령어를 System() 함수로 호출 하듯, 리눅스의 OS명령어를 파이썬에서 실행시키는 기능이다.


from subprocess import Popen, PIPE

    

proc = Popen(["python", "--version"], stdout=PIPE, stderr=PIPE)

(stdout, _) = proc.communicate()

print(stdout, _)


Subprocess.Popen()

Subprocess.Popen()은 os에게 fork로 새로운 process를 시키도록 명령을 내리는 것이고, 아래 나오는 multiprocess는 python 의 프로세스 내에서 분기하는 것이다.

* Minimal subprocess 예시

task = subprocess.Popen(["cat", "abc.txt"], cwd='/home/imcomking/TTT/', stdout=subprocess.PIPE, stderr=subprocess.PIPE)


for line in task.stdout:

    print(line)




'Development > Python' 카테고리의 다른 글

Python Profiling  (0) 2020.10.21
Python Callback  (0) 2020.08.13
Python Subprocess  (0) 2020.08.13
Python Audio Processing  (0) 2020.05.02
한글을 Sub-character level로 파싱하기(python으로 유니코드 파싱)  (0) 2020.04.16
CSV파일 인코딩(Encoding)  (0) 2020.03.23

댓글0