Python Plans to Remove GIL for True Multithreading

PEP 703 proposes an optional, no-GIL build of CPython that keeps existing behaviour by default but allows distributors to ship interpreters without the Global Interpreter Lock. The steering council accepted the proposal for Python 3.13+ with the understanding that the GIL remains available for compatibility while work continues on tooling and ecosystem readiness.

Why It Matters

  • Concurrency: CPU-bound workloads (data science, simulations, ML inference) can finally leverage multi-core execution without multiprocessing workarounds.
  • Performance: Benchmarks from the Faster CPython team show promising parallel speed-ups, though single-thread performance may dip slightly without further tuning.
  • Ecosystem Impact: C extensions that assume the GIL must adopt fine-grained locking or use the new per-interpreter GIL helpers.

What Developers Should Do Now

  1. Track Releases: Python 3.13 will likely ship an experimental --disable-gil build. Production-ready status will take several release cycles.
  2. Audit Extensions: Libraries using PyGILState_* APIs or assuming implicit serialisation need thread-safety reviews.
  3. Test for Data Races: Introduce stress tests and sanitizers to ensure code behaves correctly with true parallelism.
  4. Watch Tooling: Expect updates to debuggers, profilers, and packaging tools to support both GIL and no-GIL interpreters.

Useful Resources

Removing the GIL is a multi-year effort. Start planning for concurrency-friendly code today so you can take advantage of the parallel Python era when it arrives.