Python 3.14 Concurrency & Threading Reference

Source: Python 3.14.6 documentation (docs.python.org, last updated 2026-06-10), read in full: threading, concurrent.futures, concurrent.interpreters, the Concurrent Execution chapter index, and the Python support for free threading HOWTO. Written for orchestrata-ultimate, which runs Python 3.14t (free-threaded, GIL genuinely off).

The four concurrency models

Model Module Parallel CPU? Memory model When
Threads threading / ThreadPoolExecutor GIL build: no. 3.14t: yes Shared, everything mutable I/O-bound; CPU-bound too on 3.14t
Subinterpreters concurrent.interpreters / InterpreterPoolExecutor Yes (per-interpreter GIL since 3.12) Isolated; explicit sharing (pickle / Queue / memoryview) CSP/actor-style isolation in one process
Processes multiprocessing / ProcessPoolExecutor Yes Isolated; pickle over pipes CPU-bound on GIL builds; crash isolation
Event loop asyncio No (single thread) Shared, cooperative High-fanout I/O

threading — the primitives (3.14 state)

Free-threading (PEP 703) — the 3.14t build

concurrent.futures

One abstract Executor API — submit(fn, *args) → Future, map(fn, *iterables, timeout, chunksize, buffersize), shutdown(wait, cancel_futures) — with three pools:

concurrent.interpreters (PEP 734) — NEW in 3.14

orchestrata-ultimate guidance

Related: Free-threaded Prolog, Running the test suite, Pytest live observer.