반응형

파이썬 동시성 프로그래밍

 

학습목표

1. 무엇이 asyncio인지, 그리고 이것의 효용이 무엇인지.

2. concurrency, parellism, threads, process

3. GIL과 이게 주는 concurrency에 대한 챌린지

4. 넌 블러킹 소켓으로 컨커런시를 어떻게 달성하는지 (하나의 스레드로)

5. 이벤트 루프 베이스의 컨커런시가 어떻게 작동하는지

 

1.1 asyncio란?

- io길게 걸리는 경우가 많음.

- 이때 해결할 수 있는것은 concurrency를 도입하는 것.

- 한번에 핸들하는 태스크가 하나 이상인 경우 --> concurrency

- web request 여러개를 동시에 받거나, 웹서버에 동시에 커넥션을 여러개를 허용하는 경우.

- asyncio를 도입하면 이를 해결할 수 있음.

- 동시성 프로그래밍이란, 특별히 길게 걸리는 태스크가 메인 어플리케이션에 뒤에서 분리되어 실행될수 잇는 것을 의미한다.

- 즉, 하나의 길게 걸리는 태스크가 스턱되지 않는 것을 의미한다.

- python 3.4에서는 데코레이터와 yield from으로, 3.5 부터는 async, await으로 해결

- 이는 synchronous하게 돌아가게끔 보이게함.

- 코루틴이란, 메서드인데 잠재적으로 길게 돌아가는 태스크가 멈출수 있고, 그게 끝나면 다시시작할수있는 방법을 의미함.

- asyncio는 싱글쓰레드 이벤트루프 모델을 사용하여 코루틴들을 비동기적으로 실행하는 라이브러리임.

- io 에만 좋음.

 

1.3 concurrency, parellism, multitasking

- concurrency

- 동시에 일어나는 일.

반응형

+ Recent posts