# `asyncio` — 비동기 I/O

asyncio는 async/await 구문을 사용하여 동시성 코드를 작성하는 라이브러리입니다.

asyncio는 고성능 네트워크 및 웹 서버, 데이터베이스 연결 라이브러리, 분산 작업 큐 등을 제공하는 여러 파이썬 비동기 프레임워크의 기반으로 사용됩니다.

asyncio는 종종 IO 병목이면서 고수준의 구조화된 네트워크 코드에 가장 적합합니다.

asyncio는 다음과 같은 작업을 위한 고수준 API 집합을 제공합니다:

- 파이썬 코루틴들을 동시에 실행하고 실행을 완전히 제어할 수 있습니다.

- 네트워크 IO와 IPC를 수행합니다;

- 자식 프로세스를 제어합니다;

- 큐를 통해 작업을 분산합니다;

- 동시성 코드를 동기화합니다;

또한, 라이브러리와 프레임워크 개발자가 다음과 같은 작업을 할 수 있도록 하는 저수준 API가 있습니다:

- `네트워킹`, `자식 프로세스` 실행, `OS 시그널` 처리 등의 비동기 API를 제공하는 이벤트 루프를 만들고 관리합니다.

- 트랜스포트를 사용하여 효율적인 프로토콜을 구현합니다.

- 콜백 기반 라이브러리와 async/await 구문을 사용한 코드 간에 다리를 놓습니다.

asyncio REPL

You can experiment with an `asyncio` concurrent context in the REPL:

    $ python -m asyncio
    asyncio REPL ...
    Use "await" directly instead of "asyncio.run()".
    Type "help", "copyright", "credits" or "license" for more information.
    >>> import asyncio
    >>> await asyncio.sleep(10, result='hello')
    'hello'

Raises an auditing event `cpython.run_stdin` with no arguments.

버전 3.8.20에서 변경: Emits audit events.

레퍼런스

고수준 API

- 코루틴과 태스크
- 스트림
- 동기화 프리미티브
- 서브 프로세스
- 큐
- 예외

저수준 API

- 이벤트 루프
- 퓨처
- 트랜스포트와 프로토콜
- 정책
- 플랫폼 지원

가이드 및 자습서

- 고수준 API 색인
- 저수준 API 색인
- asyncio로 개발하기

참고

asyncio의 소스 코드는 Lib/asyncio/에서 찾을 수 있습니다.