파이썬은 기본적으로 싱글 쓰레드로 동작하기 때문에 I/O 작업의 경우에 비동기적으로 프로그래밍 하면 훨씬 효율적으로 application을 구현할 수 있다. 파이썬에서는 asyncio
라는 라이브러리를 사용하여 비동기 프로그래밍을 할 수 있다.
async
키워드를 붙이면 코루틴 함수가 된다.EventLoop
에 등록되어야 실행되기 때문에 await
키워드를 붙이거나 Future
혹은 Task
로 감싸서 실행시켜줘야 한다.await
나 return
으로 실행권을 EventLoop로 넘겨줘야, 다른 코루틴을 실행시킬 수 있다.await의 역할
- await 키워드 뒤에 있는 코루틴을 EventLoop에 등록한다.
- await을 호출한 주체(ex. main)이 코루틴이 끝나면 실행권을 다시 돌려받기를 기대하며 실행권을 EventLoop로 넘긴다.
await
이나 return
을 만나면 실행권이 EventLoop로 넘어가고, EventLoop는 자신의 queue에 담긴 다른 코루틴을 실행시킨다.await
으로 잠시 멈춘 코루틴은, await
이 호출된 지점에서 멈춰있다가 다시 EventLoop로부터 실행될 때는 멈춰있던 지점부터 이어서 다시 실행된다.await
로 실행시킬 때와 달리 실행권을 EventLoop로 넘기지 않으면서 바로 EventLoop에 등록시킨다.지금까지는 asyncio의 핵심 컴포넌트의 개념에 대해 살펴봤고, 다음 포스트에서 코드와 함께 살펴보자