-
[Python] 병행성과 병렬성언어/파이썬 & 장고 2016. 12. 9. 21:24
병행성(Concurrency)
병행성(concurrency)란 컴퓨터가 여러 일을 마치 동시에 하듯이 수행하는 것을 말합니다. 예를 들어 CPU 코어가 하나인 컴퓨터에서 운영체제는 단일 프로세서에서 실행하는 프로그램을 빠르게 변경합니다. 이 방법으로 프로그램을 교대로 실행하여 프로그램들이 동시에 실행하는 것처럼 보입니다. 쉽게말해 오리가 물위를 떠다니기 위해 물속에서 발장구치는 것과 같습니다. (오리= 1 Core 컴퓨터, 발장구 = 여러프로세스들)
병렬성(Parallelism)
병렬성(parallelism)은 실제로 여러 작업을 동시에 실행하는 것입니다. CPU 코어가 여러 개인 컴퓨터는 여러 프로그램을 동시에 실행할 수 있습니다. 각 CPU코어가 각기 다른 프로그램의 명령어를 실행하여 각 프로그램이 같은 순간에 실행하게 해줍니다.
단일 프로그램 안에서 병행성이라는 도구를 이용하면 특정 유형의 문제를 더욱 쉽게 해결할 수 있습니다. 병행 프로그램은 별개의 여러 실행 경로를 동시에 독립적으로 실행하는 것처럼 진행하게 해줍니다. 병렬성과 병행성 사이의 가장 큰 차이점은 속도향상입니다. 한 프로그램에서 서로 다른 두 실행 경로를 병렬로 진행하면 전체 작업에 걸리는 시간이 절반으로 줍니다. 즉 실행속도가 두 배로 빨라집니다. 반면 병행 프로그램은 수천가지 실행경로를 병렬로 수행하는 것처럼 보이게 해주지만 전체 작업 속도는 향상되지 않습니다.
파이썬을 쓰면 병행프로그램을 쉽게 작성할 수 있습니다. 시스템 호출, 서브프로세스, C 확장을 이용한 병렬 작업에도 파이썬을 쓸 수 있습니다. 그러나 병행 파이썬 코드를 실제 병렬로 실행하게 만드는건 어렵습니다.