Skip to content
Snippets Groups Projects
asyncio.rst 2.34 KiB
Newer Older
  • Learn to ignore specific revisions
  • :mod:`asyncio` --- Asynchronous I/O
    ===================================
    
       :synopsis: Asynchronous I/O.
    
    -------------------------------
    
    
           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
    
    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.
    
    
    
    .. We use the "rubric" directive here to avoid creating
       the "Reference" subsection in the TOC.
    
    .. rubric:: Reference
    
       :caption: High-level APIs
    
       asyncio-task.rst
    
       asyncio-sync.rst
    
       asyncio-subprocess.rst
    
       asyncio-queue.rst
    
       :caption: Low-level APIs
    
       asyncio-eventloop.rst
       asyncio-future.rst
       asyncio-protocol.rst
       asyncio-policy.rst
       asyncio-platforms.rst
    
       asyncio-extending.rst
    
       :caption: Guides and Tutorials
    
       asyncio-api-index.rst
    
       asyncio-llapi-index.rst
    
    
    .. note::
       The source code for asyncio can be found in :source:`Lib/asyncio/`.