- 멀티프로세싱: 크롬탭을 여러개 띄워두고 사용
- 각 크롬탭은 별도의 프로세스에서 실행됨→ 어느 하나의 탭에서 문제가 발생해도 다른 탭에 영향이 없음
- 멀티스레딩: 하나의 크롬탭 내에서 여러가지 작업 처리
- 쇼핑(검색)
- 다운로드
- 동영상 재생
- 페이지 스크롤,클릭
멀티스레딩과 멀티프로세싱은 동시에 여러 작업을 처리하는 방식이지만, 그 구현 방식과 특징에는 차이가 있다.
- 멀티스레딩(Multithreading):
- 멀티스레딩은 하나의 프로세스 내에서 여러 개의 스레드를 생성하여 동시에 여러 작업을 처리하는 방식이다.
- 스레드 간 데이터를 공유할 수 있으므로, 자원 공유가 용이하고 메모리 공간 및 시스템 자원을 적게 사용한다. (자원사용에 효율성)
- 작업이 독립적이지 않은 경우에는 여러 스레드 간의 동기화 문제가 발생할 수 있다.
- 한 스레드에서 발생한 문제가 다른 스레드에까지 영향을 미칠 수 있다
- GIL(Global Interpreter Lock)로 인해 파이썬에서 CPU-bound 작업의 병렬 처리에 제약이 있을 수 있다.
- 멀티프로세싱(Multiprocessing):
- 멀티프로세싱은 여러 개의 프로세스를 생성하여 각각의 프로세스가 독립적으로 실행되는 방식이다.
- 각 프로세스는 자체 메모리 공간을 가지므로 데이터 공유가 어렵지만, 독립적으로 실행되기 때문에 하나의 프로세스에서 문제가 발생해도 다른 프로세스에 영향을 주지 않는다.
- 메모리 공간을 별도로 사용하므로 멀티스레딩에 비해 메모리 사용량이 많고, 프로세스 간 통신(IPC, Inter-Process Communication)을 위한 추가적인 비용이 발생할 수 있다.
- 하나의 프로세스가 다운되더라도 다른 프로세스는 계속해서 동작할 수 있어 안정성이 높다.
장단점 :
- 멀티스레딩은 자원 공유가 용이하고 메모리 사용량이 적지만, 동기화 문제와 GIL로 인한 성능 제약이 있다.
- 멀티프로세싱은 독립적인 실행 환경을 제공하여 안정성이 높지만, 메모리 사용량이 많고 프로세스 간 통신에 비용이 발생할 수 있다.
- 그럼에도 우리가 멀티스레딩을 더 많이 쓰는 이유
- 자원 공유의 효율: 멀티스레드는 같은 프로세스 내에서 실 행되므로 자원 공유가 쉽습니다. 스레드 간의 통신이 단순하고 빠르며, 메모리 공간과 시스템 자원을 적게 소비한다.
- 경량화: 프로세스에 비해 경량화. 스레드의 생성,관리,전환에 오버헤드가 적다
- 작업 처리 속도: 멀티스레드는 프로세스 간의 컨텍스트 전환보다 스레드 간의 컨텍스트 전환 비용이 낮기 때문에 작업 처리 속도가 더 빠를 수 있다.
- 응답성 향상: 멀티스레드를 사용하면 여러 작업을 동시에 처리할 수 있어 응답성이 향상될 수 있다. -> GUI 프로그램에서 사용자 인터페이스 응답성을 높일 때 유용함
'TIL' 카테고리의 다른 글
[TIL 2024. 05. 09] API문서 작성 (w. Notion) (0) | 2024.05.10 |
---|---|
[TIL 2024. 05. 08] point로 게시물 sort하기 (0) | 2024.05.09 |
[TIL 2024. 05. 03] 심화 팀프로젝트 (0) | 2024.05.07 |
[TIL 2024. 05. 02] 웹 서버 | 웹 애플리케이션 서버 (0) | 2024.05.03 |
[TIL 2024. 05. 01] DRF 개인과제 오류수정(2) (0) | 2024.05.02 |