"asyncio" --- 비동기 I/O
************************

======================================================================


Hello World!
^^^^^^^^^^^^

   import asyncio

   async def main():
       print('Hello ...')
       await asyncio.sleep(1)
       print('... World!')

   asyncio.run(main())

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

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

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

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

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

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

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

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

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

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

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

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

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

가용성: not WASI.

이 모듈은 웹어셈블리에서 작동하지 않거나 제공되지 않습니다. 자세한 내
용은 WebAssembly platforms을 참조하세요.

-[ 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.

-[ 레퍼런스 ]-


고수준 API
^^^^^^^^^^

* Runners

* 코루틴과 태스크

* 스트림

* 동기화 프리미티브

* 서브 프로세스

* 큐

* 예외


저수준 API
^^^^^^^^^^

* 이벤트 루프

* 퓨처

* 트랜스포트와 프로토콜

* 정책

* 플랫폼 지원

* Extending


가이드 및 자습서
^^^^^^^^^^^^^^^^

* 고수준 API 색인

* 저수준 API 색인

* asyncio로 개발하기

참고:

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