Zettelkasten

Coroutine은 실행을 중단했다가 재개할 수 있는 함수다

·수정 2026.04.23·수정 2

요약

  • Coroutine은 실행 중간에 멈췄다가 멈춘 지점에서 다시 시작할 수 있는 함수
  • I/O 대기 시간에 다른 작업을 처리할 수 있어 효율적

본문

Thread와의 차이

구분 Coroutine Thread
실행 공간 User mode Kernel mode
스케줄링 협력적 (Cooperative) 선점형 (Preemptive)
전환 시점 명시적 키워드 (await, yield) OS가 강제로 전환

협력적 스케줄링

Coroutine은 특정 키워드(await, yield, suspend)를 통해 스스로 실행을 양보한다. 양보하는 순간 다른 Coroutine이 CPU를 점유할 수 있게 된다.

async def fetch_data():
    response = await http.get(url)  # 여기서 양보, 다른 코루틴 실행 가능
    return response.json()

왜 쓰는가

I/O 작업(네트워크, 파일, DB)은 CPU가 기다리기만 하는 시간이 길다. Coroutine을 쓰면 대기 시간 동안 다른 Coroutine이 CPU를 사용할 수 있어 자원을 효율적으로 활용한다.

참고