asyncio
--- Asynchronous I/O, event loop, coroutines and tasksNew in version 3.4.
Source code: Lib/asyncio/
[UNKNOWN NODE transition]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:
- a pluggable event loop with various system-specific implementations;
- transport and protocol abstractions (similar to those in Twisted);
- concrete support for TCP, UDP, SSL, subprocess pipes, delayed calls, and others (some may be system-dependent);
- a
Future
class that mimics the one in theconcurrent.futures
module, but adapted for use with the event loop; - coroutines and tasks based on
yield from
(PEP 380), to help write concurrent code in a sequential fashion; - cancellation support for
Future
s and coroutines; - synchronization primitives for use between coroutines in
a single thread, mimicking those in the
threading
module; - 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.
Asynchronous programming is more complex than classical "sequential" programming: see the Develop with asyncio page which lists common traps and explains how to avoid them. Enable the debug mode during development to detect common issues.
Table of contents:
- Base Event Loop
- Event loops
- Tasks and coroutines
- Transports and protocols (callback based API)
- Transports
- Protocols
- Protocol examples
- Streams (coroutine based API)
- Subprocess
- Synchronization primitives
- Locks
- Semaphores
- Queues
- Queue
- PriorityQueue
- LifoQueue
- Develop with asyncio