| 
									
										
										
										
											2013-11-22 11:47:22 -08:00
										 |  |  | :mod:`asyncio` -- Asynchronous I/O, event loop, coroutines and tasks
 | 
					
						
							|  |  |  | ====================================================================
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | .. module:: asyncio
 | 
					
						
							|  |  |  |    :synopsis: Asynchronous I/O, event loop, coroutines and tasks.
 | 
					
						
							| 
									
										
										
										
											2015-08-31 11:42:31 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-06-11 15:02:54 -04:00
										 |  |  | .. versionadded:: 3.4
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | **Source code:** :source:`Lib/asyncio/`
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-08-31 11:42:31 -04:00
										 |  |  | .. note::
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |    The asyncio package has been included in the standard library on a
 | 
					
						
							|  |  |  |    :term:`provisional basis <provisional package>`. Backwards incompatible
 | 
					
						
							|  |  |  |    changes (up to and including removal of the module) may occur if deemed
 | 
					
						
							|  |  |  |    necessary by the core developers.
 | 
					
						
							| 
									
										
										
										
											2014-09-06 19:43:06 +10:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-11-22 16:53:25 -08:00
										 |  |  | --------------
 | 
					
						
							| 
									
										
										
										
											2013-11-22 11:47:22 -08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-11-23 00:34:26 +01:00
										 |  |  | This module provides infrastructure for writing single-threaded concurrent
 | 
					
						
							|  |  |  | code using coroutines, multiplexing I/O access over sockets and other
 | 
					
						
							|  |  |  | resources, running network clients and servers, and other related primitives.
 | 
					
						
							|  |  |  | Here is a more detailed list of the package contents:
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-02-02 15:03:02 +01:00
										 |  |  | * a pluggable :ref:`event loop <asyncio-event-loop>` with various system-specific
 | 
					
						
							| 
									
										
										
										
											2013-11-23 00:34:26 +01:00
										 |  |  |   implementations;
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-02-02 15:03:02 +01:00
										 |  |  | * :ref:`transport <asyncio-transport>` and :ref:`protocol <asyncio-protocol>` abstractions
 | 
					
						
							| 
									
										
										
										
											2014-10-29 10:57:37 +01:00
										 |  |  |   (similar to those in `Twisted <https://twistedmatrix.com/trac/>`_);
 | 
					
						
							| 
									
										
										
										
											2013-11-23 00:34:26 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | * concrete support for TCP, UDP, SSL, subprocess pipes, delayed calls, and
 | 
					
						
							|  |  |  |   others (some may be system-dependent);
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-02-08 18:36:14 -06:00
										 |  |  | * a :class:`Future` class that mimics the one in the :mod:`concurrent.futures`
 | 
					
						
							| 
									
										
										
										
											2013-12-03 19:17:25 +01:00
										 |  |  |   module, but adapted for use with the event loop;
 | 
					
						
							| 
									
										
										
										
											2013-11-23 00:34:26 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | * coroutines and tasks based on ``yield from`` (:PEP:`380`), to help write
 | 
					
						
							|  |  |  |   concurrent code in a sequential fashion;
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-02-09 06:07:47 -08:00
										 |  |  | * cancellation support for :class:`Future`\s and coroutines;
 | 
					
						
							| 
									
										
										
										
											2013-11-23 00:34:26 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-02-02 15:03:02 +01:00
										 |  |  | * :ref:`synchronization primitives <asyncio-sync>` for use between coroutines in
 | 
					
						
							| 
									
										
										
										
											2013-11-23 00:34:26 +01:00
										 |  |  |   a single thread, mimicking those in the :mod:`threading` module;
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-11-22 15:45:02 -08:00
										 |  |  | * an interface for passing work off to a threadpool, for times when
 | 
					
						
							|  |  |  |   you absolutely, positively have to use a library that makes blocking
 | 
					
						
							|  |  |  |   I/O calls.
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-02-25 14:23:51 +01:00
										 |  |  | Asynchronous programming is more complex than classical "sequential"
 | 
					
						
							|  |  |  | programming: see the :ref:`Develop with asyncio <asyncio-dev>` page which lists
 | 
					
						
							|  |  |  | common traps and explains how to avoid them. :ref:`Enable the debug mode
 | 
					
						
							|  |  |  | <asyncio-debug-mode>` during development to detect common issues.
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-07-24 02:59:02 -04:00
										 |  |  | Table of contents:
 | 
					
						
							| 
									
										
										
										
											2013-11-23 00:34:26 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-12-03 01:08:00 +01:00
										 |  |  | .. toctree::
 | 
					
						
							|  |  |  |    :maxdepth: 3
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |    asyncio-eventloop.rst
 | 
					
						
							| 
									
										
										
										
											2014-07-08 23:42:38 +02:00
										 |  |  |    asyncio-eventloops.rst
 | 
					
						
							| 
									
										
										
										
											2013-12-03 01:08:00 +01:00
										 |  |  |    asyncio-task.rst
 | 
					
						
							|  |  |  |    asyncio-protocol.rst
 | 
					
						
							| 
									
										
										
										
											2014-01-23 11:05:01 +01:00
										 |  |  |    asyncio-stream.rst
 | 
					
						
							| 
									
										
										
										
											2014-02-02 22:43:39 +01:00
										 |  |  |    asyncio-subprocess.rst
 | 
					
						
							| 
									
										
										
										
											2013-12-03 01:08:00 +01:00
										 |  |  |    asyncio-sync.rst
 | 
					
						
							| 
									
										
										
										
											2015-02-25 13:55:43 +01:00
										 |  |  |    asyncio-queue.rst
 | 
					
						
							| 
									
										
										
										
											2014-01-16 18:58:01 +01:00
										 |  |  |    asyncio-dev.rst
 | 
					
						
							| 
									
										
										
										
											2013-11-23 00:34:26 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-12-03 15:04:36 +01:00
										 |  |  | .. seealso::
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-07-24 02:59:02 -04:00
										 |  |  |    The :mod:`asyncio` module was designed in :PEP:`3156`. For a
 | 
					
						
							| 
									
										
										
										
											2013-12-03 15:04:36 +01:00
										 |  |  |    motivational primer on transports and protocols, see :PEP:`3153`.
 | 
					
						
							|  |  |  | 
 |