blob: b076b7d0093b09875c3d2dab64280a2c876ed4c7 [file] [log] [blame]
Serhiy Storchaka29b0a262016-12-04 10:20:55 +02001:mod:`asyncio` --- Asynchronous I/O, event loop, coroutines and tasks
2=====================================================================
Guido van Rossum7a465642013-11-22 11:47:22 -08003
4.. module:: asyncio
5 :synopsis: Asynchronous I/O, event loop, coroutines and tasks.
6
Terry Jan Reedyfa089b92016-06-11 15:02:54 -04007.. versionadded:: 3.4
8
9**Source code:** :source:`Lib/asyncio/`
10
Guido van Rossumf8d0ff92013-11-22 16:53:25 -080011--------------
Guido van Rossum7a465642013-11-22 11:47:22 -080012
Antoine Pitroubba86822013-11-23 00:34:26 +010013This module provides infrastructure for writing single-threaded concurrent
14code using coroutines, multiplexing I/O access over sockets and other
15resources, running network clients and servers, and other related primitives.
Antoine Pitroubba86822013-11-23 00:34:26 +010016Here is a more detailed list of the package contents:
17
Victor Stinner9592edb2014-02-02 15:03:02 +010018* a pluggable :ref:`event loop <asyncio-event-loop>` with various system-specific
Antoine Pitroubba86822013-11-23 00:34:26 +010019 implementations;
20
Victor Stinner9592edb2014-02-02 15:03:02 +010021* :ref:`transport <asyncio-transport>` and :ref:`protocol <asyncio-protocol>` abstractions
Georg Brandlb7354a62014-10-29 10:57:37 +010022 (similar to those in `Twisted <https://twistedmatrix.com/trac/>`_);
Antoine Pitroubba86822013-11-23 00:34:26 +010023
24* concrete support for TCP, UDP, SSL, subprocess pipes, delayed calls, and
25 others (some may be system-dependent);
26
Brian Curtina1afeec2014-02-08 18:36:14 -060027* a :class:`Future` class that mimics the one in the :mod:`concurrent.futures`
Victor Stinner99c2ab42013-12-03 19:17:25 +010028 module, but adapted for use with the event loop;
Antoine Pitroubba86822013-11-23 00:34:26 +010029
30* coroutines and tasks based on ``yield from`` (:PEP:`380`), to help write
31 concurrent code in a sequential fashion;
32
Eli Benderskyb73c8332014-02-09 06:07:47 -080033* cancellation support for :class:`Future`\s and coroutines;
Antoine Pitroubba86822013-11-23 00:34:26 +010034
Victor Stinner9592edb2014-02-02 15:03:02 +010035* :ref:`synchronization primitives <asyncio-sync>` for use between coroutines in
Antoine Pitroubba86822013-11-23 00:34:26 +010036 a single thread, mimicking those in the :mod:`threading` module;
37
Guido van Rossumf0f5d382013-11-22 15:45:02 -080038* an interface for passing work off to a threadpool, for times when
39 you absolutely, positively have to use a library that makes blocking
40 I/O calls.
41
Victor Stinner532c69a2015-02-25 14:23:51 +010042Asynchronous programming is more complex than classical "sequential"
43programming: see the :ref:`Develop with asyncio <asyncio-dev>` page which lists
44common traps and explains how to avoid them. :ref:`Enable the debug mode
45<asyncio-debug-mode>` during development to detect common issues.
46
Terry Jan Reedy9ff41802014-07-24 02:59:02 -040047Table of contents:
Antoine Pitroubba86822013-11-23 00:34:26 +010048
Victor Stinnerea3183f2013-12-03 01:08:00 +010049.. toctree::
50 :maxdepth: 3
Antoine Pitroubba86822013-11-23 00:34:26 +010051
Victor Stinnerea3183f2013-12-03 01:08:00 +010052 asyncio-eventloop.rst
Victor Stinneraea82292014-07-08 23:42:38 +020053 asyncio-eventloops.rst
Victor Stinnerea3183f2013-12-03 01:08:00 +010054 asyncio-task.rst
55 asyncio-protocol.rst
Victor Stinner24f8ebf2014-01-23 11:05:01 +010056 asyncio-stream.rst
Victor Stinner08444382014-02-02 22:43:39 +010057 asyncio-subprocess.rst
Victor Stinnerea3183f2013-12-03 01:08:00 +010058 asyncio-sync.rst
Victor Stinner615a58e2015-02-25 13:55:43 +010059 asyncio-queue.rst
Victor Stinnerdb39a0d2014-01-16 18:58:01 +010060 asyncio-dev.rst
Antoine Pitroubba86822013-11-23 00:34:26 +010061
Victor Stinner85a2be72013-12-03 15:04:36 +010062.. seealso::
63
Terry Jan Reedy9ff41802014-07-24 02:59:02 -040064 The :mod:`asyncio` module was designed in :PEP:`3156`. For a
Victor Stinner85a2be72013-12-03 15:04:36 +010065 motivational primer on transports and protocols, see :PEP:`3153`.
66