In Python, only one thread can interact with the Interpreter. The GIL enforces this mechanism. This is to ensure thread safety. What are the reasons to not have one lock per mutable data and this lock has to be acquired to read/write to/from this data rather than have a GIL. This way, I think Python could still maintain some concurrency capacity