asyncio
— Asynchronous I/O¶
asyncio는 async/await 구문을 사용하여 동시성 코드를 작성하는 라이브러리입니다.
asyncio는 고성능 네트워크 및 웹 서버, 데이터베이스 연결 라이브러리, 분산 작업 큐 등을 제공하는 여러 파이썬 비동기 프레임워크의 기반으로 사용됩니다.
asyncio는 종종 IO 병목이면서 고수준의 구조화된 네트워크 코드에 가장 적합합니다.
asyncio는 다음과 같은 작업을 위한 고수준 API 집합을 제공합니다:
파이썬 코루틴들을 동시에 실행하고 실행을 완전히 제어할 수 있습니다.
네트워크 IO와 IPC를 수행합니다;
자식 프로세스를 제어합니다;
큐를 통해 작업을 분산합니다;
동시성 코드를 동기화합니다;
또한, 라이브러리와 프레임워크 개발자가 다음과 같은 작업을 할 수 있도록 하는 저수준 API가 있습니다:
create and manage event loops, which provide asynchronous APIs for networking, running subprocesses, handling OS signals, etc;
트랜스포트를 사용하여 효율적인 프로토콜을 구현합니다.
콜백 기반 라이브러리와 async/await 구문을 사용한 코드 간에 다리를 놓습니다.
Availability: not WASI.
This module does not work or is not available on WebAssembly. See WebAssembly platforms for more information.
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.12.5에서 변경: (also 3.11.10, 3.10.15, 3.9.20, and 3.8.20) Emits audit events.
버전 3.13에서 변경: Uses PyREPL if possible, in which case PYTHONSTARTUP
is
also executed. Emits audit events.
레퍼런스
참고
asyncio의 소스 코드는 Lib/asyncio/에서 찾을 수 있습니다.