:mod:`asyncio` --- Asynchronous I/O =================================== .. module:: asyncio :synopsis: Asynchronous I/O. ------------------------------- .. 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. asyncio provides a set of **high-level** APIs to: * :ref:`run Python coroutines <coroutine>` concurrently and have full control over their execution; * perform :ref:`network IO and IPC <asyncio-streams>`; * control :ref:`subprocesses <asyncio-subprocess>`; * distribute tasks via :ref:`queues <asyncio-queues>`; * :ref:`synchronize <asyncio-sync>` concurrent code; Additionally, there are **low-level** APIs for *library and framework developers* to: * create and manage :ref:`event loops <asyncio-event-loop>`, which provide asynchronous APIs for :meth:`networking <loop.create_server>`, running :meth:`subprocesses <loop.subprocess_exec>`, handling :meth:`OS signals <loop.add_signal_handler>`, etc; * implement efficient protocols using :ref:`transports <asyncio-transports-protocols>`; * :ref:`bridge <asyncio-futures>` callback-based libraries and code with async/await syntax. You can experiment with an ``asyncio`` concurrent context in the REPL: .. code-block:: pycon $ 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' .. include:: ../includes/wasm-notavail.rst .. We use the "rubric" directive here to avoid creating the "Reference" subsection in the TOC. .. rubric:: 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 .. 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:: The source code for asyncio can be found in :source:`Lib/asyncio/`.