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)가 이를 공유하게 함으로써 보완할 수 있다.
같은 자원에 접근할 때 순차적으로 처리되기 때문에 문제가 발생할 확률은 적으나,
Queue 에 관리하는 리소스가 많이 쌓이게 되면 처리속도가 느려질 수 있음
데이터 처리가 쉽고, 처리속도가 빠름
n1이 끝나면 n2이 실행
n2이 끝나면 n3이 실행
.
.
.
n9이 끝나면 n10이 실행
n1 작업이 완료되는 시간 10초
n2 작업이 완료되는 시간 20초
n3 작업이 완료되는 시간 30초
작업 완료 시간 10 * 10 = 100 초 + α : 전처리 작업 시간 10