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
Author And Source
이 문제에 관하여(Multi-process의 두 가지 구현 방식), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@kstech/Multi-process의-두-가지-구현-방식저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)