I was never sure about that, thinking that a single interpreter process runs on one core and the threads must share that process space. But you're right, and I found good confirmation in this visualization (see the "code" link also): http://www.dabeaz.com/GIL/gilvis/fourthread.html
• Python threads are real system threads
• POSIX threads (pthreads)
• Windows threads
• Fully managed by the host operating system
• Represent threaded execution of the Python interpreter process (written in C)
See also http://www.dabeaz.com/python/UnderstandingGIL.pdf, which explains that