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 |