mirror of
				https://github.com/python/cpython.git
				synced 2025-10-30 21:21:22 +00:00 
			
		
		
		
	 188598851d
			
		
	
	
		188598851d
		
			
		
	
	
	
	
		
			
			Signed-off-by: Pablo Galindo <pablogsal@gmail.com> Co-authored-by: Pablo Galindo <pablogsal@gmail.com> Co-authored-by: Kumar Aditya <kumaraditya@python.org> Co-authored-by: Ćukasz Langa <lukasz@langa.pl> Co-authored-by: Savannah Ostrowski <savannahostrowski@gmail.com> Co-authored-by: Jacob Coffee <jacob@z7x.org> Co-authored-by: Irit Katriel <1055913+iritkatriel@users.noreply.github.com>
		
			
				
	
	
		
			124 lines
		
	
	
	
		
			3.1 KiB
		
	
	
	
		
			ReStructuredText
		
	
	
	
	
	
			
		
		
	
	
			124 lines
		
	
	
	
		
			3.1 KiB
		
	
	
	
		
			ReStructuredText
		
	
	
	
	
	
| :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 :ref:`networking <loop_create_server>`,
 | |
|   running :ref:`subprocesses <loop_subprocess_exec>`,
 | |
|   handling :ref:`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.
 | |
| 
 | |
| .. include:: ../includes/wasm-notavail.rst
 | |
| 
 | |
| .. _asyncio-cli:
 | |
| 
 | |
| .. rubric:: asyncio REPL
 | |
| 
 | |
| You can experiment with an ``asyncio`` concurrent context in the :term:`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'
 | |
| 
 | |
| .. 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 :envvar:`PYTHONSTARTUP` is
 | |
|    also executed. Emits audit events.
 | |
| 
 | |
| .. 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
 | |
|    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::
 | |
|    The source code for asyncio can be found in :source:`Lib/asyncio/`.
 |