-
multithread vs multiprocess (feat. Process, Pool 비교)IT용어정리 2024. 5. 8. 18:55
멀티스레드와 멀티프로세스는 모두 데이터 병렬처리를 위한 python 모듈로 약간의 차이점과 용도별 차이가 있습니다.
스레드 vs 프로세스
스레드
- 하나의 프로세스 안에 여러개의 스레드 존재
출처: Inpa Dev - 4가지 메모리 영역중 스레드는 고유의 stack을 보유함 > stack은 독립적 함수 호출 가능 > 독립적 실행 흐름 추가
출처: Inpa Dev 프로세스
- 메모리 내 별도의 주소 공간에서 실행(독립적 구조)
- 동시성(concurrency) vs 병렬성(parallel)
- 동시성: 동시에 실행하는 것처럼 보이는 → 각 프로세스 작업을 작게 쪼개어 번갈아 처리 → context switching
- 병렬성: 실제 물리적인 동시 실행
멀티스레드
1. 여러개의 스레드가 하나의 프로세스 내에서 실행되며,
2. 동일한 메모리 공간을 공유
3. context switching이 가벼워 메모리 및 성능 효율적이며, 스레드 간의 데이터 공유가 용이함.
4. 파일을 읽고 쓰기위한 I/O 작업에 적합함.
5. 동시성(concurrency)을 주로 다룸 => CPU가 스레드 간에 전환하면서 작업 실행(동시 처리처럼 보이는)
멀티프로세스
1. 각 프로세는 독립적 메모리 공간에서 실행됨
2. 프로세스간 직접적인 데이터 공유 불가능
3. 메모리 공간이 독립적이므로, 한 프로세스에의 오류가 다른 프로세스에 영향 미치지 않음.
4. cpu 집약적 작업에 적합함.
5. 진정한 병렬성 구현 가능 => 여러 작업 동시 처리 가능
Python multiprocessing 모듈
1. Process
- 하나의 작업에 대해 개별 프로세스 생성하여 독립적으로 실행
- 여러작업 병렬로 처리 위해 여러 process 객체 생성
- 독립적 메모리 공간에서 서로 직접적인 데이터 공유 X
- 프로세스 직접 관리
Process 예시코드 2. Pool
- 미리 지정된 수의 프로세스 생성 후 프로세스 풀에서 작업 처리
- 작업이 완료된 프로세스는 다시 풀에 반환되어 작업 재실행 ⇒ 프로세스 풀 재사용
- 배치 작업 시 유용하며 효율적인 자원 사용 가능
- 프로세스 자동관리
Pool 예시코드 ref:
👩💻 완전히 정복하는 프로세스 vs 스레드 개념
한눈에 이해하는 프로세스 & 스레드 개념 전공 지식 없이 컴퓨터의 프로그램을 이용하는데는 문제 없어 왔지만 소프트웨어를 개발하는 사람으로서 컴퓨터 실행 내부 요소를 따져보게 될때, 아
inpa.tistory.com
당신이 어떤 것을
할머니에게 설명해주지 못한다면,
그것은 진정으로 이해한 것이 아니다.
- A.Einstein
'IT용어정리' 카테고리의 다른 글
웹 브라우저 주소창에 URL을 입력하면 일어나는 일 (feat. DNS, IP주소) (0) 2021.03.15 Spark 개념 정리 (0) 2021.01.08 쿠키(cookie) & 세션(session) & 캐시(cache) 개념 설명 (0) 2020.07.16