Home | History | Annotate | Download | only in library
      1 :mod:`asyncio` --- Asynchronous I/O
      2 ===================================
      3 
      4 .. module:: asyncio
      5    :synopsis: Asynchronous I/O.
      6 
      7 --------------
      8 
      9 .. sidebar:: Hello World!
     10 
     11    ::
     12 
     13        import asyncio
     14 
     15        async def main():
     16            print('Hello ...')
     17            await asyncio.sleep(1)
     18            print('... World!')
     19 
     20        # Python 3.7+
     21        asyncio.run(main())
     22 
     23 asyncio is a library to write **concurrent** code using
     24 the **async/await** syntax.
     25 
     26 asyncio is used as a foundation for multiple Python asynchronous
     27 frameworks that provide high-performance network and web-servers,
     28 database connection libraries, distributed task queues, etc.
     29 
     30 asyncio is often a perfect fit for IO-bound and high-level
     31 **structured** network code.
     32 
     33 asyncio provides a set of **high-level** APIs to:
     34 
     35 * :ref:`run Python coroutines <coroutine>` concurrently and
     36   have full control over their execution;
     37 
     38 * perform :ref:`network IO and IPC <asyncio-streams>`;
     39 
     40 * control :ref:`subprocesses <asyncio-subprocess>`;
     41 
     42 * distribute tasks via :ref:`queues <asyncio-queues>`;
     43 
     44 * :ref:`synchronize <asyncio-sync>` concurrent code;
     45 
     46 Additionally, there are **low-level** APIs for
     47 *library and framework developers* to:
     48 
     49 * create and manage :ref:`event loops <asyncio-event-loop>`, which
     50   provide asynchronous APIs for :meth:`networking <loop.create_server>`,
     51   running :meth:`subprocesses <loop.subprocess_exec>`,
     52   handling :meth:`OS signals <loop.add_signal_handler>`, etc;
     53 
     54 * implement efficient protocols using
     55   :ref:`transports <asyncio-transports-protocols>`;
     56 
     57 * :ref:`bridge <asyncio-futures>` callback-based libraries and code
     58   with async/await syntax.
     59 
     60 
     61 .. We use the "rubric" directive here to avoid creating
     62    the "Reference" subsection in the TOC.
     63 
     64 .. rubric:: Reference
     65 
     66 .. toctree::
     67    :caption: High-level APIs
     68    :maxdepth: 1
     69 
     70    asyncio-task.rst
     71    asyncio-stream.rst
     72    asyncio-sync.rst
     73    asyncio-subprocess.rst
     74    asyncio-queue.rst
     75    asyncio-exceptions.rst
     76 
     77 .. toctree::
     78    :caption: Low-level APIs
     79    :maxdepth: 1
     80 
     81    asyncio-eventloop.rst
     82    asyncio-future.rst
     83    asyncio-protocol.rst
     84    asyncio-policy.rst
     85    asyncio-platforms.rst
     86 
     87 .. toctree::
     88    :caption: Guides and Tutorials
     89    :maxdepth: 1
     90 
     91    asyncio-api-index.rst
     92    asyncio-llapi-index.rst
     93    asyncio-dev.rst
     94