ITookAPill's picture
PyComp First Commit
9273228
|
Raw
History Blame Contribute Delete
3.76 kB

A newer version of the Gradio SDK is available: 6.20.0

Upgrade

!asyncio{.interpreted-text role="mod"} --- Asynchronous I/O

::: {.module synopsis="Asynchronous I/O."} asyncio :::


::: sidebar Hello World!

import asyncio

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

asyncio.run(main())

:::

asyncio is a library to write concurrent code using the async/await syntax.

asyncio is used as a foundation for multiple Python asynchronous frameworks that provide high-performance network and web-servers, database connection libraries, distributed task queues, etc.

asyncio is often a perfect fit for IO-bound and high-level structured network code.

::: seealso

a-conceptual-overview-of-asyncio{.interpreted-text role="ref"}

: Explanation of the fundamentals of asyncio. :::

asyncio provides a set of high-level APIs to:

  • run Python coroutines <coroutine>{.interpreted-text role="ref"} concurrently and have full control over their execution;
  • perform network IO and IPC <asyncio-streams>{.interpreted-text role="ref"};
  • control subprocesses <asyncio-subprocess>{.interpreted-text role="ref"};
  • distribute tasks via queues <asyncio-queues>{.interpreted-text role="ref"};
  • synchronize <asyncio-sync>{.interpreted-text role="ref"} concurrent code;

Additionally, there are low-level APIs for library and framework developers to:

  • create and manage event loops <asyncio-event-loop>{.interpreted-text role="ref"}, which provide asynchronous APIs for networking <loop_create_server>{.interpreted-text role="ref"}, running subprocesses <loop_subprocess_exec>{.interpreted-text role="ref"}, handling OS signals <loop_add_signal_handler>{.interpreted-text role="ref"}, etc;
  • implement efficient protocols using transports <asyncio-transports-protocols>{.interpreted-text role="ref"};
  • bridge <asyncio-futures>{.interpreted-text role="ref"} callback-based libraries and code with async/await syntax.

::: availability not WASI.

This module does not work or is not available on WebAssembly. See wasm-availability{.interpreted-text role="ref"} for more information. :::

::: {#asyncio-cli} asyncio REPL :::

You can experiment with an asyncio concurrent context in the REPL{.interpreted-text role="term"}:

$ 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'

This REPL provides limited compatibility with PYTHON_BASIC_REPL{.interpreted-text role="envvar"}. It is recommended that the default REPL is used for full functionality and the latest features.

::: audit-event cpython.run_stdin "" "" :::

::: versionchanged 3.12.5 (also 3.11.10, 3.10.15, 3.9.20, and 3.8.20) Emits audit events. :::

::: versionchanged 3.13 Uses PyREPL if possible, in which case PYTHONSTARTUP{.interpreted-text role="envvar"} is also executed. Emits audit events. :::

Reference

::: {.toctree caption="High-level APIs" maxdepth="1"} asyncio-runner.rst asyncio-task.rst asyncio-stream.rst asyncio-sync.rst asyncio-subprocess.rst asyncio-queue.rst asyncio-exceptions.rst asyncio-graph.rst :::

::: {.toctree caption="Low-level APIs" maxdepth="1"} asyncio-eventloop.rst asyncio-future.rst asyncio-protocol.rst asyncio-policy.rst asyncio-platforms.rst asyncio-extending.rst :::

::: {.toctree caption="Guides and Tutorials" maxdepth="1"} asyncio-api-index.rst asyncio-llapi-index.rst asyncio-dev.rst :::

:::: note ::: title Note :::

The source code for asyncio can be found in Lib/asyncio/{.interpreted-text role="source"}. ::::