프로그래밍언어/파이썬[중급]
[파이썬][중급] Chapter27. async/await와 asyncio 기초
about_IT
2025. 5. 23. 23:40
728x90
비동기 프로그래밍은 하나의 쓰레드로도 여러 작업을 병렬로 처리할 수 있는 방식입니다. 파이썬에서는 asyncio
모듈과 async
, await
키워드를 통해 비동기 처리를 구현할 수 있습니다. 이는 특히 I/O 바운드 작업에서 유리합니다.
● 비동기 처리란?
동기 방식은 작업이 순차적으로 실행되며, 하나의 작업이 끝날 때까지 다음 작업이 대기합니다. 반면 비동기 방식은 작업 중간에 대기 시간이 생기면 다른 작업을 먼저 실행하여 전체 처리 시간을 줄입니다.
● async/await 기본 구조
async def
로 정의된 함수는 코루틴(coroutine)이며, await
키워드로 비동기 함수의 실행을 일시 중단할 수 있습니다.
import asyncio
async def say_hello():
print("Hello...")
await asyncio.sleep(1)
print("...World!")
asyncio.run(say_hello())
asyncio.sleep()
은 비동기적으로 대기하는 함수입니다. await
는 이 작업이 끝날 때까지 대기합니다.
● 여러 작업 동시에 실행
async def task(name):
print(f"{name} 시작")
await asyncio.sleep(2)
print(f"{name} 완료")
async def main():
await asyncio.gather(task("A"), task("B"))
asyncio.run(main())
gather()
는 여러 코루틴을 동시에 실행하며, 병렬적으로 작업을 수행합니다.
● async 함수 vs 일반 함수
- async 함수는 반드시
await
를 통해 실행되어야 함 - async 함수는 일반 함수 내에서 직접 실행 불가
- 비동기 함수 내부에서는
await
를 통해 다른 비동기 함수를 호출 가능
● 마무리
비동기 프로그래밍은 웹 크롤링, 네트워크 통신, 파일 입출력 등에서 매우 유용합니다. asyncio
와 async/await
의 개념을 이해하고, 실제 프로젝트에 적용해보며 효율적인 처리를 구현해보시기 바랍니다.
728x90