프로그래밍언어/파이썬[중급]

[파이썬][중급] 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를 통해 다른 비동기 함수를 호출 가능

● 마무리

비동기 프로그래밍은 웹 크롤링, 네트워크 통신, 파일 입출력 등에서 매우 유용합니다. asyncioasync/await의 개념을 이해하고, 실제 프로젝트에 적용해보며 효율적인 처리를 구현해보시기 바랍니다.

728x90