It's never been entirely clear what semantics Python provides when used in a multithreaded way; CPython executes each bytecode instruction atomicly but those bytecodes are really a CPython implementation detail and it's extremely nonobvious whether a given piece of python code will correspond to single bytecode instruction. As a result a lot of multithreaded python either breaks when run on more concurrent implementations (e.g. Jython) or has subtle bugs, and the standard advice for python developers is to use alternative concurrency mechanisms rather than learning to use CPython threads effectively.
At a minimum one can hope this STM implementation will allow a higher-performance, more concurrent python in which all operations that are atomic in CPython remain atomic. Better would be a high-performance implementation of the async interfaces introduced in 3.4.
At a minimum one can hope this STM implementation will allow a higher-performance, more concurrent python in which all operations that are atomic in CPython remain atomic. Better would be a high-performance implementation of the async interfaces introduced in 3.4.