Python asyncio: 코루틴과 Eventloop 완전 정복!

by DD
4년 전
조회수 5

Eventloop은 Python asyncio의 핵심이며, 코루틴은 기본 실행 단위이다.

asyncio.create_task를 통해 Eventloop에 코루틴을 등록하여 동시 실행을 구현한다.

Cooperative multitasking 방식을 통해 단일 스레드에서 여러 코루틴을 번갈아 실행한다.

코루틴과 Eventloop의 관계

Eventloop코루틴의 실행을 관리하며, await 키워드를 통해 실행 흐름을 제어한다. 구체적으로 await은 Eventloop에 코루틴을 등록하고, 실행권을 반환한다. 따라서 Cooperative multitasking을 통해 동시성을 확보한다.

asyncio.create_task vs await

asyncio.create_task는 Eventloop에 코루틴을 등록하고, Future 객체를 반환한다. 반면, await은 코루틴의 종료를 기다린다. 따라서 asyncio.create_task동시 실행을, await은 순차적 실행을 제어하는 데 사용된다.

Cooperative Multitasking 이해

Eventloop비선점형 방식으로 코루틴을 실행한다. 구체적으로, await 또는 return을 통해 실행권을 반환해야 다른 코루틴이 실행된다. 따라서 blocking 코드Eventloop을 블록하므로 주의해야 한다.

asyncio 뽀개기 1 - Coroutine과 Eventloop

댓글 0

첫 번째 댓글을 남겨보세요!