2021/08/01 4

[ Python : 동시성과 병렬성 문법 배우기 ] 3. Concurrency CPU Bound, I/O Bound

1. Concurrency 논리적인 개념 CPU의 가용성을 극대화함. 싱글코어에 멀티스레드 패턴을 사용함. 일정량을 처리 후 다음 작업으로 넘김. 제어권을 주고받으며 작업하는 패턴 (vs Parallelism) 물리적. 멀티코어. 별개의 작업 처리 후 합침 2. Blocking I/O vs Non-Blocking I/O Blocking I/O : 시스템 콜 요청시 커널 I/O 작업 완료시까지 응답을 대기함. 제어권을 커널이 소유. 응답전까지 대기(block) -> 다음 작업 수행 X Non-Blocking I/O : 커널 I/O 작업 완료 여부 상관없이 즉시 응답. 주기적으로 시스템 콜을 통해서 I/O 작업 완료 여부 확인 Async : I/O 작업 완료 여부에 대한 Noty는 커널에서 유저로 전달됨 S..

Python 2021.08.01

[ Python : 동시성과 병렬성 문법 배우기 ] 2. Parallelism with Multiprocessing

1. Process vs Thread, Parallelism Parallelism : 완전히 동일한 시점에 태스크를 실행함. 다양한 파트로 나누어서 실행. (합 나누어서 구하고 취합하기) 하나의 코어가 아님. 멀티 프로세싱을 사용함 동시성 1개의 싱글코어에서 멀티쓰레드. 번갈아가며 처리. 컨텍스트 스위칭이 빠름 병렬성 멀티코어에서 각자의 일 끝내고 합침. 2. Join, is_alive 'multiprocess.Process' 모듈 사용 프로세스를 생성할 수 있음. start() : 실행 terminate() : 종료시키기 join() : 자식프로세스 끝나기 전까지 기다린 후 종료하기 is_alive() : 프로세스 상태 출력 3. Naming, Parallel Processing 생성자의 첫번째 필드에..

Python 2021.08.01

[ Python : 동시성과 병렬성 문법 배우기 ] 1. Multithreading

* 이 포스팅은 인프런강의 "동시성과 벙렬성 문법 배우기" 강의를 듣고 공부한 내용의 포스팅임 1. Multithreading Difference between Process and Thread 프로세스 : 운영체제에서 할당 받는 자원 단위 cpu동작 시간, 주소 공간(독립적)을 할당받음. 파이프, 파일, 소켓으로 프로세스간 통신 (context switching) 스레드 : 프로세스 내 실행단위. 프로세스 자원 사용. stack만 별도이며 나머지는 공유함. 메모리를 공유하며 한 스레드가 다른스레드에 영향을 끼침 -> 동기화가 필요함 멀티 스레드 : 여러 스레드로 구성 후 처리. 교착상태 발생가능 자원 소모가 감소고 통신 부담도 적어지지만 디버깅이 어려움 멀티 프로세스 : 문제 시 프로세스를 죽임. 캐시..

Python 2021.08.01

[Python 고급] 2. Meta class

* 이 포스팅은 인프런의 "파이썬 고급 (필수문법+오픈소스 패키지 배포)" 강의를 듣고 공부한 포스팅임 1. Meta class 모든 클래스를 칭함 클래스를 생성하는 과정에서 커스텀하는 과정의 역할을 수행함 (프레임워크 작성 시 필수) 동적 생성 type : 모든 클래스의 원형이며 커스텀 생성 함수임. 검증에 자주 사용됨 (엄격하게 class 생성 과정에 영향을 받음) 2. type 동적 클래스 생성 type( name, bases(상속을 받을 클래스), dict(인스턴스 메소드, 필드 등 값 전달) ) -> 클래스가 생성됨 3. 메타클래스 상속 metaclass 속성 사용하여 커스텀 메타 클래스를 생성함. 타입 상속 __new__() : 클래스 인스턴스를 생성함 초기화 __init__() : 인스턴스 ..

Python 2021.08.01