Files
python-examples/doc/23_asyncio.md
2025-01-23 11:02:27 +09:00

1.7 KiB

asyncio 모듈: 비동기 프로그래밍

asyncio 모듈은 파이썬에서 비동기 프로그래밍을 지원하는 강력한 도구입니다. 특히, I/O 작업이 많은 네트워킹 프로그램이나 웹 서버 개발에 널리 사용됩니다.

  • 비동기 처리: 여러 작업을 동시에 처리하여 프로그램의 응답성을 높일 수 있습니다.
  • I/O 바운드 작업 최적화: 네트워크 통신, 파일 입출력과 같은 I/O 작업을 효율적으로 처리하여 프로그램의 성능을 향상시킬 수 있습니다.
  • 코루틴 기반: 코루틴을 사용하여 비동기 코드를 직관적으로 작성할 수 있습니다.
import asyncio

async def hello():
    print("Hello, world!")
    await asyncio.sleep(1)
    print("Hello again!")

async def main():
    task1 = asyncio.create_task(hello())
    task2 = asyncio.create_task(hello())
    await asyncio.gather(task1, task2)

asyncio.run(main())

위 예시에서 async 키워드로 코루틴 함수 hello()를 정의하고, asyncio.run()을 통해 이벤트 루프를 시작하여 코루틴을 실행합니다. asyncio.sleep()은 비동기적으로 1초 동안 일시 정지하는 함수입니다.

asyncio의 핵심 개념

  • 이벤트 루프: 비동기 작업을 관리하고 스케줄링하는 중심 엔진입니다.
  • 코루틴: 비동기 함수를 정의하는 데 사용되는 키워드 asyncawait를 사용하여 작성됩니다. 코루틴은 실행 중에 일시 중단될 수 있으며, 다른 코루틴이 실행될 수 있는 기회를 제공합니다.
  • 태스크: 코루틴을 실행하는 객체입니다. 이벤트 루프는 태스크를 관리하고 실행합니다.