asyncio — 비동기 I/O¶
asyncio는 async/await 구문을 사용하여 동시성 코드를 작성하는 라이브러리입니다.
asyncio는 고성능 네트워크 및 웹 서버, 데이터베이스 연결 라이브러리, 분산 작업 큐 등을 제공하는 여러 파이썬 비동기 프레임워크의 기반으로 사용됩니다.
asyncio는 종종 IO 병목이면서 고수준의 구조화된 네트워크 코드에 가장 적합합니다.
더 보기
- A conceptual overview of asyncio
asyncio의 기초 개념에 대한 설명입니다.
asyncio는 다음과 같은 작업을 위한 고수준 API 집합을 제공합니다:
파이썬 코루틴들을 동시에 실행하고 실행을 완전히 제어할 수 있습니다.
네트워크 IO와 IPC를 수행합니다;
자식 프로세스를 제어합니다;
큐를 통해 작업을 분산합니다;
동시성 코드를 동기화합니다;
또한, 라이브러리와 프레임워크 개발자가 다음과 같은 작업을 할 수 있도록 하는 저수준 API가 있습니다:
네트워킹, 자식 프로세스 실행, OS 시그널 처리 등의 비동기 API를 제공하는 이벤트 루프를 만들고 관리합니다.
트랜스포트를 사용하여 효율적인 프로토콜을 구현합니다.
콜백 기반 라이브러리와 async/await 구문을 사용한 코드 간에 다리를 놓습니다.
asyncio REPL
REPL 에서 asyncio 동시성 컨텍스트를 실험해 볼 수 있습니다:
$ 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'
이 REPL은 PYTHON_BASIC_REPL 과 제한적인 호환성을 제공합니다. 모든 기능과 최신 기능을 활용하려면 기본(default) REPL을 사용하는 것이 권장됩니다.
인자 없이 감사 이벤트 cpython.run_stdin 을 발생시킵니다.
버전 3.12.5에서 변경: (또한 3.11.10, 3.10.15, 3.9.20, 및 3.8.20 포함) 감사 이벤트를 발생시킵니다.
버전 3.13에서 변경: 가능한 경우 PyREPL을 사용하며, 이 경우 PYTHONSTARTUP 도 실행됩니다. 감사 이벤트를 발생시킵니다.
레퍼런스
고수준 API
참고
asyncio의 소스 코드는 Lib/asyncio/에서 찾을 수 있습니다.