Understanding The Python GIL

虽然面试被拒,不过每次与牛人的交流都是一次很好地学习。我发现很多东西还是模棱两可,要不就是知其然,不知其所以然。写代码的时候很多东西都是临时上网查查,然后拿来用,慢慢就成了api工程师,还是没法成为真正的程序员。
比如GIL这个东西,从来没有深究过,只是知道cpython的实现有个GIL,只知道python解释器为每个执行的线程上锁,导致每次只能够执行一个线程。但是为什么需要GIL?( This lock is necessary mainly because CPython’s memory management is not thread-safe.)
线程切换发生了什么?为什么python不移除这个软肋?这些从来没有仔细想过。网上搜集了一些资源,分享一下吧:

另外还有几篇不错的文章,可以参考下。要想深入了解cpython的机制还是得参考cpython的源码实现,得有一定的C语言基础,学习的路还很长啊。。。
GIL
GlobalInterpreterLock
Python的GIL是什么鬼,多线程性能究竟如何
python-thread-gil-and-ctypes