일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
- Writing
- 월간
- 화상영어
- 쓰릴오브파이트
- 미드시청
- 10분
- realclass
- FIT XR
- 사이드
- 스탭퍼
- 개발자
- 링피트
- 매일
- 잡생각
- 운동
- 30분
- Problem Solving
- 리얼 클래스
- 프로젝트
- 3줄정리
- 영어원서읽기
- 파비최
- English
- 뭐든
- 영어공부
- leetcode
- 만화도
- 읽기
- 괜찮음
- Daily Challenge
- Today
- Total
파비의 매일매일 공부기록
파이썬 병렬 프로그래밍 - #1 병렬, 동시성, 분산 프로그래밍 문맥 설명 본문
이번장은 병렬, 동시성, 분산 프로그래밍 콘텍스트(문맥)에 대한 내용이다.
대략적인 내용은 책을 보지 않아도 알고 있다.
병렬 : 한 번에 여러 작업을 수행
동시성 : 동시에 여러 작업을 수행
분산 프로그래밍 : 동시에 여러 작업을 수행하는데 필요한 프로그래밍
근데.. 내가 아는 내용이 맞는 걸까? 책을 보면서 조금씩 개념을 잡아봐야겠다.
병렬 프로그래밍 사용 이유 : 개발자가 앱의 성능 최적화를 하기 위함. 결과적으로 UX 뿐 아니라 RESOURCE 소모도 개선 가능.
일반적인 병렬화 : 동시성 시스템과 비슷하다고 혼동하는 경우가 다수. 동시성 프로그래밍은 병렬 프로그래밍의 추상화.
- 분산 프로그램의 인기 이유 : 무정지, 수평적 확장, 클라우드 컴퓨팅. 결국은 독립적인 프로세스들이 존재함으로써 확장 및 교체가 쉽고 무정지 시스템을 구축 가능함.
병렬 프로그래밍에서의 통신 : 그러나 문제는 서로 다른 작업들끼리 통신을 자주 해야 함. 통신 방식은 크게 두 가지가 있음.
- 공유 상태 : 프로세스 중 하나가 자원을 공유하는 유효하지 않은 작업을 수행 시 다른 프로세스에 영향 끼칠 수 있음. 뮤 텍스 같은 기능으로 제어
- 메시지 전달 : 실행 중인 프로세스에서 메시지를 교환하는 메커니즘으로 구성. 데이터 접근이 동시에 발생하지 않으며 로컬이나 분산 환경에서 메시지 교환 가능. 확장성 문제가 거의 없으며 다른 시스템 간 상호 운용 가능. 일반 프로그램 유지관리 쉬움
병렬 프로그래밍의 문제점 : 자격증 시험 또는 면접 질문으로 많이 나오는 주제 중 하나인 듯.
- 교착상태(데드락) : 두 개 이상의 작업자가 자원이 해제될 때까지 영원히 기다리는 현상.
- 기아상태(스타베이션) : 하나 이상의 프로세스가 불공정한 순위로 실행되어 생기는 문제. 특정 프로세스는 계속 실행이 안됨.
- 경쟁조건(레이스 컨디션) : 프로세스 결과가 순서에 의존하면 동기화 메커니즘이 없어 순서가 깨지게 되어 경쟁 조건에 직면함. 동기화 메커니즘은 필수.
파이썬 병렬 프로그래밍 도구 찾기
- 파이썬 threading 모듈
- 파이썬 multiprocessing 모듈
- Parallel 파이썬 모듈
- 셀러리: 분산 태스크 큐
'Study > Python' 카테고리의 다른 글
파이썬 병렬 프로그래밍 - #3 병렬화 문제 확인 (0) | 2021.07.21 |
---|---|
파이썬 병렬 프로그래밍 - #2 병렬 알고리즘 설계 (0) | 2021.07.20 |
파이썬 병렬 프로그래밍 - #0 들어가며 (0) | 2021.07.18 |
Two Scoops of Django - #34장 (2) | 2021.07.05 |
Two Scoops of Django - #33장 (0) | 2021.07.04 |