Multi-process의 두 가지 구현 방식

10초의 처리시간이 걸리는 동일한 프로세스가 10개 실행이 될 때,

n1 	n2 	n3 		. . . 		n8 	n9 	n10

하나의 프로세스를 분할하는 방식으로 실행

하나의 프로세스를 쪼개어 부분적으로 실행하여 진행하는 방식

n1 1초에 해당하는 작업 실행
n2 1초에 해당하는 작업 실행
.
.
.
n10 1초에 해당하는 작업 실행


n1 2초에 해당하는 작업 실행
n2 2초에 해당하는 작업 실행
.
.
.
n10 2초에 해당하는 작업 실행


.
.
.


n1 10초에 해당하는 작업 실행
n2 10초에 해당하는 작업 실행
.
.
.
n10 10초에 해당하는 작업 실행

n1 작업이 완료되는 시간 100초
n2 작업이 완료되는 시간 100초
n3 작업이 완료되는 시간 100초

작업 완료 시간 10 * 10 = 100 초 + α : 전처리 작업 시간 10 x 10(n을 실행할 때마다 반복)

프로세스를 1~2개 돌리는 단순한 멀티 프로세스를 구현할 경우 큰 문제가 발생하지 않을지도 모르지만, 프로세스가 많아지고 로직이 복잡해지는 경우 작업시간의 지연이 발생할 수 있다.

멀티프로세스의 장점

프로세스가 독립적이기 때문에 하나의 프로세스에 문제가 생기더라도 다른 프로세스에 영향을 미치지 않는다.

기타

멀티스레드와 비교하였을 때 자원 효율성이 떨어진다고 생각할 수 있으나,
이는 여러개의 프로세스가 처리되어야 할 때 동일한 데이터를 사용하고, 이러한 데이터를 하나의 디스크에 두고 모든 프로세서(CPU)가 이를 공유하게 함으로써 보완할 수 있다.

1. Message Queue 방식

같은 자원에 접근할 때 순차적으로 처리되기 때문에 문제가 발생할 확률은 적으나,
Queue 에 관리하는 리소스가 많이 쌓이게 되면 처리속도가 느려질 수 있음

2. Shared Memory 방식

데이터 처리가 쉽고, 처리속도가 빠름

참고) (단일프로세스) 하나의 프로세스씩 순차적인 방식으로 실행

하나의 프로세스가 완료되면 다음 프로세스를 진행하는 방식

n1이 끝나면 n2이 실행
n2이 끝나면 n3이 실행
.
.
.
n9이 끝나면 n10이 실행

n1 작업이 완료되는 시간 10초
n2 작업이 완료되는 시간 20초
n3 작업이 완료되는 시간 30초

작업 완료 시간 10 * 10 = 100 초 + α : 전처리 작업 시간 10

좋은 웹페이지 즐겨찾기