CPython is Python’s standard reference implementation, written primarily in C. It defines expected language behavior and differs from alternatives such as Jython on the JVM and IronPython on .NET. section 1.5
CPython manages memory primarily through reference counting, but its implementation is not thread safe. The global interpreter lock (GIL) therefore permits only one thread in a process to execute Python bytecode at a time, even on multicore machines. section 1.5
This limits CPU-bound gains from multithreading and can expose shared-variable race conditions. Multiprocessing can execute bytecode concurrently because each process has its own GIL. section 1.5
Fibonacci and threads
Two recursive Fibonacci calculations complete in 65.1516 seconds sequentially and 66.1059 seconds with two threads, illustrating why threads do not automatically speed up CPU-bound Python work under CPython.

