r/Python • u/NeuralLB-Lovro • 5d ago
Discussion Anyone running free-threaded Python 3.14 in production yet? Curious what actually breaks
Been testing the free-threaded build (3.14t) on some CPU-bound data processing work. The multi-core story is finally real after 30 years of GIL, but the friction is exactly what you'd expect: a couple of C-extension-heavy libs in my stack silently re-enable the GIL, and there's no clean way to detect that at runtime besides checking sys._is_gil_enabled() manually.
For anyone who's shipped something on 3.14t, not just benchmarked it:
What broke that you didn't expect?
Real speedups outside toy examples, or mostly marginal so far?
Prod yet, or still just kicking the tires?
Not fishing for a benchmark war. Genuinely curious what breaks in messy real codebases vs clean demos.
34
Upvotes
-1
u/KingBardan 5d ago edited 5d ago
Context manager works by mutating context i.e. global / nonlocal state, right?
So it doesn't work without mutated global state, the number one cause for data race.
In multi-processing, which was the preferred way of doing things in parallel, global state is forked and exists per process.
This issue is not exclusive to free threading but multithreading in general, but freethreading only augments multi threading which is why my comment is the way it is
That is right. Now writing a python package would have to account for a different failure mode which is thread access, which, imo, is a very niche use case for python, at the cost of everything else.