Tuesday, December 14, 2010

call process without wait

요즘 microbe annotation pipeline을 만들고 있는데 때때로 일의 진행이 동시에 일어나야 할 때가 있다. 그러니까 A , B, C 라는 프로세스가 있을때 A -> B -> C 순서대로 일을 진행하지 말고 A, B, C가 연관성이 없는 작업이기때문에 그냥 동시에 일을 진행하려 한다. 일반으로 python에서 os 상의 어떤 명령어를 실행할때 os.system을 많이 쓰는데 이 모듈은 실행시킨 프로세스가 종료가 되고 return이 되야 다음으로 넘어간다. 그래서 그냥 return 값의 wait 없이 바로 바로 진행시키는 모듈을 찾다가.. http://docs.python.org/library/subprocess.html#subprocess-replacements (17.1.3.4 참조)과 같은 링크에서 발견. 이름하여 subprocess 모듈의 Popen. 내 생각이 맞다면 알아서 os가 cpu에 잡을 나누겠지. cpu가 하나라면 의미 없겠지만(I/O 의 경우를 제외하면, 단순 계산이라면 성능의 향상이 없을거겠지만) 일반적으로 지금 쓰는 컴터가 쿼드니까 알아서 나눠주겠지.. 아닐려나.. 아니라면 누가 좀 수정해주세요.