[Python] 01. Difference between Process and Thread
1. 프로세스(Process)
- 운영체제 -> 할당 받는 자원 단위 (실행 중인 프로그램)
Mac의 경우 Alt + Space 클릭하여, Search 창에 Activity Monitor 켜서 확인 가능
- CPU 동작 시간, 주소 공간 (독립적)
- Code, Data, Stack, Heap -> 독립적
- 최소 1개의 메인 스레드 보유
- 파이프, 파일, 소켓 등을 사용해서 프로세스간 통신 (Cost 높음) => Context Switching
2. 스레드(Thread)
- 프로세스(Process) 내에 실행 흐름 단위
- 프로세스의 자원 사용
- Stack만 별도 할당, 나머지는 공유(Code, Data, Heap)
- 메모리 공유(변수 공유)
- 한 스레드의 결과가 다른 스레드에 영향 끼침
- 동기화 문제는 정말 주의해야 함(디버깅이 어렵기 때문)
3. 멀티 스레드(Multi Thread)
- 한 개의 단일 어플리케이션(응용프로그램) -> 여러 스레드로 구성 후 작업 처리
- 시스템 자원 소요 감소(효율성), 처리량 증가(Cost 감소)
- 통신 부담 감소, 디버깅 어려움, 단일 프로세스에는 효과 미약, 자원 공유 문제(교착 상태;Deadlock), 프로세스 영향
3. 멀티 프로세스(Multi Process)
- 한 개의 단일 어플리케이션(응용프로그램) -> 여러 프로세스로 구성 후 작업 처리
- 한 개의 프로세스 문제 발생은 확산 없음 (프로세스 Kill)
- 캐시 체인지, Cost 비용 매우 높음(오버헤드), 복잡한 통신 방식 사용
* 아래 무료 샘플 강의를 듣고 정리한 내용입니다.
고수가 되는 파이썬 : 동시성과 병렬성 문법 배우기 Feat. 멀티스레딩 vs 멀티프로세싱 (Inflearn Origi
기술면접 대비를 위해 OS 지식을 기반으로 멀티 스레딩 및 멀티프로세싱, 병렬성, 병행성 등의 문법을 다루기 위한 과정입니다. 다수의 자원으로 실행 효율을 높이는 방법에 대한 기반 지식을 학
www.inflearn.com