thread pool vs. event loop 정리 - Python, TypeScript, Java

Keno Kim·2025년 12월 2일

thread pool vs. event loop

  • thread pool 은 CPU bound 작업에 유리하고, event loop 는 IO bound 작업에 유리하다.

Event Loop

  • Event Loop 는 IO 작업을 마주쳤을 때, 그 작업이 끝날 때 까지 다른 작업을 실행한다. 이를 통해 동시처리를 할 수 있다.
  • Python 의 경우, 단일 thread 위에서 도는 작업 스케쥴러다.
    • asyncio 라이브러리가 event loop 기능을 제공한다.
1. 실행 가능한 coroutine 을 작업 큐에 넣는다.
2. coroutine 을 실행한다.
3. await 을 만나면 멈추고, 다른 coroutine 을 실행한다.
4. io 작업이 끝나면, 다시 작업 큐에 넣는다.
5. loop

예). db 호출 - sqlalchemy async 라이브러리 기능을 쓸 경우,

async def func():
    await db_call()
  • async 함수 밑에 blocking 코드를 넣으면 메인 thread 가 블락된다.

예). CPU bound 작업을 구현해야 하는 경우,

  • await run_in_threadpool(task) 와 같이 thread pool 을 활용할 수 있다.
profile
개발자의 생각 로그

0개의 댓글