It would be inefficient to share data structures or interpreter internal state across threads. This would lead to the poor performance you described with mutex contention.<p>It is better to have an interpreter instance per thread, each having their own separate variable pool, and pass messages between the different interpreter instances. This model scales well with multicore systems and is faster than the multi-process equivalent.<p>It&#x27;s also a simpler model to implement and maintain. Python&#x27;s current multithreading model is too complicated from an implementation point of view.