GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Awesome Python
  • Submit a project
  • Sponsorship
  • awesome-asyncio

This view

  • Original page
  • New address

GeezerVison is showing awesome-python.com — Python Asynchronous Programming Libraries - Awesome Python

  • iPulse AI

    Open Agentic Investment Research Platform. Inspect deep multi-agent market forecasts and stock picks.

  • PyUiBuilder

    Build your Python GUIs like Canva using drag and drop. Export clean, editable Python code.

Listed in editorial order, grouped by use case. Click a column header to re-sort the whole list.

Press / to search. Tags open their category. Click a row for details.

Search and filter

Results

Row number Tags

Async I/O 6 projects

1 asyncio Asynchronous Programming Stdlib 78,173 2026-11-12 Async I/O Asynchronous Programming Python Language Stdlib →
(Python standard library) Asynchronous I/O, event loop, coroutines and tasks.
Also see: awesome-asyncio
python/docs.python.org/3/library/asyncio.html /78,173 stars /2026-11-12
2 anyio Asynchronous Programming 987,465,562 2,568 2026-11-11 Async I/O Asynchronous Programming Python Language →
A high-level async concurrency and networking framework that works on top of asyncio or trio.
agronholm/github.com/agronholm/anyio /2,568 stars /2026-11-11
3 uvloop Asynchronous Programming 276,148,474 11,935 2026-10-19 Async I/O Asynchronous Programming Python Language →
Ultra-fast asyncio event loop.
MagicStack/github.com/MagicStack/uvloop /11,935 stars /2026-10-19
4 trio Asynchronous Programming 41,352,095 7,361 2026-11-10 Async I/O Asynchronous Programming Python Language →
A friendly library for async concurrency and I/O.
python-trio/github.com/python-trio/trio /7,361 stars /2026-11-10
5 gevent Asynchronous Programming 27,876,954 6,444 2026-09-16 Async I/O Asynchronous Programming Python Language →
A coroutine-based Python networking library that uses greenlet.
gevent/github.com/gevent/gevent /6,444 stars /2026-09-16
6 Twisted Asynchronous Programming 15,102,829 6,002 2026-11-11 Async I/O Asynchronous Programming Python Language →
An event-driven networking engine.
twisted/github.com/twisted/twisted /6,002 stars /2026-11-11

Parallelism 2 projects

7 concurrent.futures Asynchronous Programming Stdlib 78,173 2026-11-12 Parallelism Asynchronous Programming Python Language Stdlib →
(Python standard library) High-level asynchronous execution of callables.
python/docs.python.org/3/library/concurrent.futures.html /78,173 stars /2026-11-12
8 multiprocessing Asynchronous Programming Stdlib 78,173 2026-11-12 Parallelism Asynchronous Programming Python Language Stdlib →
(Python standard library) Process-based parallelism.
python/docs.python.org/3/library/multiprocessing.html /78,173 stars /2026-11-12

No projects match your search.

Try a broader term, or .

Asynchronous Programming guide

asyncio is the standard library's way to write concurrent code with async/await, and many async web servers, database drivers, and task queues build on it. Start your program with asyncio.run(), called once as the main entry point. App code should rarely need the event loop object itself. Run related tasks in an asyncio.TaskGroup: when one task fails, it cancels the rest, which gather() doesn't. CPU-heavy code holds up every task on the loop, so run it in another process: hand it to a ProcessPoolExecutor with loop.run_in_executor().

concurrent.futures runs callables on threads or processes behind the same interface. ThreadPoolExecutor is for overlapping I/O. For CPU-bound work on a multi-core machine, the threading docs advise processes instead, and ProcessPoolExecutor runs them for you. It takes only picklable functions and arguments, though. Use either executor in a with block, which shuts it down and waits for its work to finish.

AnyIO brings Trio-like structured concurrency to asyncio. Code written against its API runs unmodified on asyncio or Trio, so a library built on it doesn't choose for its users. Its docs see strong merits in its APIs for applications too, starting with cancel scopes for more predictable cancellation. Start with anyio.run(main), which runs on asyncio unless you pass backend="trio". Spawn tasks in a task group: when one child task raises, the rest are cancelled.

uvloop is a drop-in replacement for asyncio's event loop, built on libuv. Its README prefers uvloop.run(main()), which configures asyncio.run() to use uvloop, so the rest of your asyncio code stays the same. uvloop runs on Linux and macOS.

Trio has an obsessive focus on usability and correctness. Child tasks run in a nursery, opened with async with trio.open_nursery(), and Trio never discards their exceptions. Functions take no timeout arguments: you wrap the code in a cancel scope like trio.move_on_after(). Trio runs its own event loop, so asyncio functions don't work inside trio.run(). Check the Trio library list for what you need first.

gevent uses greenlets to give you a synchronous API on top of an event loop. Its monkey patching swaps the standard library's blocking sockets for cooperative ones, so code that knows nothing about gevent runs concurrently. Most programs should patch everything with monkey.patch_all(), and the main module should do it before any other imports.

Twisted is an event-based framework for internet applications that ships clients and servers for HTTP, SSH, IMAP, POP3, SMTP, DNS, IRC, and XMPP. Write new Twisted code as async def coroutines, which its docs prefer over inlineCallbacks, and start one with Deferred.fromCoroutine().

multiprocessing runs work in subprocesses, so it can use every processor on a machine. Its own docs point to ProcessPoolExecutor as the higher-level interface for pooled tasks. Reach for multiprocessing when you need what it adds, like killing a running process or passing data through queues and pipes. Its guidelines say to avoid shared state and keep the data moving between processes small.

On an event loop, a blocking call holds up every other task, so push it to a worker thread: asyncio has asyncio.to_thread(), AnyIO to_thread.run_sync(), and Trio trio.to_thread.run_sync(). When multiprocessing or ProcessPoolExecutor runs your code in child processes, define its functions in a module. Guard your entry point with if __name__ == '__main__': too, so each new process can import your main module safely.

Contribute

Know a project that belongs here?

Tell us what it does and why it stands out.

Submit a project Star the repository
You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.