IT/프로그래밍

[파이썬] 동시성과 병렬성[패스트 캠퍼스 챌린지 47일]

뜻밖의 행복 2022. 3. 11. 21:17
반응형

안녕하세요? 뜻밖의 행운입니다.

오늘은 패스트 캠퍼스 도전 47일이 되는 날이네요

챕터 7까지 오다니 정말 많이 왔네요 ㅎ

현재 듣는 강의는 챕터 14까지 있고 프레임 워크 3개를 배워서

각각 또 미니 프로젝트를 최종적으로 만드는 강의 인데

끝까지 듣고 다른 개발 언어들도 교양 형식으로 알아두려고 합니다.

그러면 현재 하고 있는 업무 이해에 많은 도움이 되지 않을까 싶네요 ㅎㅎ

 

오늘은 이론적인 내용을 배웠습니다.

따로 실습은 없는 내용입니다. 

 

동시성과 병렬성과 관련 있는 스레드와 프로세스에 대해서 배웠습니다.

여기서 싱글 스레드, 싱글 프로세스 뿐만 아니라 병렬성이니까 멀티 스레드, 멀티 프로세스에 대해서도 잘 배웠습니다.

멀티 하면 역시나 동시에 여러개를 하는 거니까 처리량이 늘어나고 좋다고 보통 생각 하겠지만

사실 일을 나눠서 하면 결국 나중에 합치는 작업이 필요한데 

그 나누고 합칠때의 오버헤드 그리고 그 것을 구현하는 것이 결코 쉬운 작업이 아니라 

꽤 고난이도의 작업이라고 알고 있습니다. 

 

오늘 배운 강의는 거기까지 깊이 들어가지 않았고 살짝 맛만 봤습니다.

 

우선 오늘 배운 내용 개념들이 살짝 정리하면

 

프로그램 : 작업을 수행하는 명령어의 집합

뭐 용어의 정의야 여기저기서 미묘하게 차이가 날 수 있는데 

그 핵심이 보통 공통점이 많은 내용이라 

그리고 이 프로그램이 메모리에 올라와서 실행되는 상태를

프로세스 라고 합니다. 익숙 한 개념일 수 있는데 

바로 윈도우에서 ctrl + alt + del 키로 자주 볼 수 있는 화면이죠

 

네 이처럼 메모리에 상주하면서 실행 되고 있는 것을 프로세스라고 합니다.

그리고 스레드는 프로세스에서 실행 되는 작업을 스레드라고 합니다.

네 마치 드라마의 인물 관계 처럼 프로그램, 프로세스, 스레드 관계가 정리가 되었죠?

 

보통 일반적인 경우 프로세스는 하나의 스레드로 구성되고 

이를 싱글 스레드라고 합니다. 

경우에 따라서 여러 개의 스레드로 구성이 가능하죠 

 

하지만 위에서 간략히 언급했듯 쉬운 작업은 아닙니다.

 

싱글 스레드의 프로그램의 경우 CPU를 구매 할때 굳이 다중 core의 CPU가 큰 의미가 없습니다.

이럴때는 CPU clock speed많이 중요하죠 

프로세스 하나에서 여러 스레드를 동시에 처리하는 경우 멀티 스레드 

프로세스 자체가 여러 개인 경우를 멀티 프로세스라고 합니다.

 

 

반응형