Free-threaded CPython is ready to experiment with!
Free-threaded CPython is ready to experiment with!

Free-threaded CPython is ready to experiment with!

Free-threaded CPython is ready to experiment with!
Free-threaded CPython is ready to experiment with!
While pure Python code should work unchanged, code written in other languages or using the CPython C API may not. The GIL was implicitly protecting a lot of thread-unsafe C, C++, Cython, Fortran, etc. code - and now it no longer does. Which may lead to all sorts of fun outcomes (crashes, intermittent incorrect behavior, etc.).
:tabclose
those libraries include pretty much almost all popular libraries. It's just impossible to write performant code in python.
I'm curious to see how this whole thing shakes out. Like, will removing the GIL be an uphill battle that everyone regrets even suggesting?Will it be so easy, we wonder why we didn't do it years ago? Or, most likely, somewhere in the middle?
Did you read the article?
Yes, testing infrastructure is being put in place and some low-hanging fruit bugs have already been squashed. This bodes well, but it's still early days, and I imagine not a lot of GIL-less production deployments are out there yet - where the real showstoppers will potentially live.
I'm tenatively optimistic, but threading bugs are sometimes hard to catch
I have a project ready to try this out. It's a software simulator, and each run (typically 10-10,000 iterations) can be done independently, with the results aggregated and shown at the end. It's also instrumented to show CPU and memory usage, and on MacOS, you can watch how busy each core gets (hint: PEGGED in multicore mode).
Can run it single-threaded, then with multiprocessing, then with multi-core and time each one. Pretty happy with multicore, but as soon as the no-GIL/subinterpreter version is stable, will try it out and see if it makes any difference. Under the hood it uses numpy and scipy, so will have to wait for them.
Edit: on my todo list is to try it all out in Mojo. They make pretty big performance gain claims.
It's exciting, but man there are lots of assumptions in native python built around the gil.
I've seen lists, etc. modified by threads assuming the gil locks for them. Testing this e2e for any production deployment can be a bit of a nightmare.
My company makes it super easy for me - we're just going to continue on python 2.7 and add this to the long list of reasons why we're not upgrading.
Please send help.
You may be pleased to know that PyPy's Python 2.7 branch will be maintained indefinitely, since PyPy is also written in Python 2.7. Also, if you can't leave CPython yet, ActivePython's team is publishing CPython 2.7 security patches.
Why would you not be upgrading due to a new feature of python? You don't like new features or was that a badly wordered sentence?
Python 2.7 and iOS mobile programmers stuck on Objective-C could start a support group.