코루틴(coroutine)이란?

2025. 6. 1. 23:55·개발 | 프로젝트

1. 코루틴이란 ?

프로그래밍을 하다 보면 파일 읽기 등 시간이 오래 걸리는 작업을 처리할 일이 생깁니다. 이러한 작업을 효율적으로 처리하기 위해 사용하는 개념 중 하나가 바로 코루틴(Coroutine)입니다.

 

코루틴은 일반 함수처럼 실행되지만, 중간에 멈췄다가 다시 이어서 실행할 수 있는 함수를 말합니다. 일반 함수는 호출되면 종료될 때까지 계속 실행되지만, 코루틴은 필요에 따라 잠시 멈췄다가 다시 실행할 수 있습니다.

즉, 코루틴은 비동기 처리를 더욱 직관적이고 간결하게 만들어 주는 기능입니다.

 

2. 코루틴을 사용하는 이유

코루틴을 사용하는 가장 큰 이유는 비동기 작업을 효율적으로 처리하기 위해서입니다. 예를 들어 서버로부터 데이터를 받아오는 동안 기존 방식은 응답이 올 때까지 기다려야 했지만, 코루틴을 사용하면 그 시간 동안 다른 작업을 처리할 수 있어 프로그램의 효율성이 높아집니다.

 

장점

- UI가 멈추지 않음

- 서버 자원을 효율적으로 활용 가능

- 복잡한 비동기 코드를 간결하게 작성 가능

 

단점

- 코루틴은 일반적으로 스레드보다 느림 ( 코루틴은 단일 스레드에서 실행, 스레드는 여러 코어를 사용해 병렬 실행 가능 )

 

3. 코루틴 예시

Python에서의 코루틴 사용

import asyncio

async def say_hello():
    print("Hello")
    await asyncio.sleep(1)
    print("World")

asyncio.run(say_hello())

 

파이썬에서는 async def로 코루틴을 정의하고, await 키워드로 다른 코루틴의 결과를 기다릴 수 있습니다. 위 예시는 1초 기다리는 동안 프로그램이 멈추지 않고 다른 작업을 처리할 수 있게 하는 코드입니다.

 

 

kotlin에서의 코루틴 사용

import kotlinx.coroutines.*

fun main() = runBlocking {
    launch {
        delay(1000L)
        println("World")
    }
    println("Hello")
}

 

  • launch: 새로운 코루틴을 실행
  • delay: 코루틴을 일정 시간 멈춤 (실제 스레드는 블로킹되지 않음)

 

 

'개발 | 프로젝트' 카테고리의 다른 글

Expo 앱 빌드부터 App Store 배포하기  (1) 2025.07.11
[Blender] 주요 모드 / 사용법 및 단축키  (0) 2025.07.01
Foreground와 Background  (0) 2025.05.28
[LLM] Llama 3 설치 / llama 3.2 Bllossom 3B gguf 한국어 모델 사용하기  (0) 2025.05.08
[YOLO] YOLOv5 모델 학습 / 예제 코드  (0) 2025.05.08
'개발 | 프로젝트' 카테고리의 다른 글
  • Expo 앱 빌드부터 App Store 배포하기
  • [Blender] 주요 모드 / 사용법 및 단축키
  • Foreground와 Background
  • [LLM] Llama 3 설치 / llama 3.2 Bllossom 3B gguf 한국어 모델 사용하기
seulll
seulll
개인 공부 블로그입니다.
  • seulll
    seulll
    seulll
  • 전체
    오늘
    어제
    • 분류 전체보기 (357) N
      • 코딩테스트 (242) N
        • programmers (python) (161)
        • 백준 (python) (79) N
      • 자료구조 | 알고리즘 (14)
      • 개발 | 프로젝트 (22)
        • Python (4)
        • Java | Spring (8)
        • Android (5)
        • Unity (3)
        • API (4)
      • CS (5) N
        • Network (6)
        • SQL (2)
        • OS (4)
      • 데이터 분석 (14)
      • 기타 (15)
  • 블로그 메뉴

    • 홈
    • 태그
    • 글쓰기
    • 설정
  • 링크

    • GitHub
  • 인기 글

  • 태그

    야근 지수
    카카오맵
    코딩테스트
    Boxplot
    API
    파이썬
    바다코끼리
    웹크롤링
    Python
    kakao map api
    Greedy
    카카오맵 api
    프로그래머스
    백엔드 개발자 역량
    모델 성능 평가
    프렌즈4블록
    박스플롯
    2 x n 타일링
    confusion matrix
    오블완
    asterisk
    오차행렬
    그리디 알고리즘
    데이터분석
    대입 표현식
    백엔드 개발자
    티스토리챌린지
    train_test_split
    solving environment
    백엔드
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
seulll
코루틴(coroutine)이란?
상단으로

티스토리툴바