Python自带的解释器是CPtyhon。CPtyhon解释器的多线程实际上一个假的多线程(在多核CPU中,只能利用一核,不能利用多核)。同一时刻只有一个线程在执行,为了保证同一时刻只有一个下线程在执行,在CPython解释器中有一个东西叫做GIL,叫做全局解释器锁。这个解释器锁是有必要的,因为CPython解释器的内存管理不是线程安全的。当然,处理CPython,还有其他解释器:
- 1.Jython,用Java实现的解释器。不存在GIL锁。
- 2.IronPython:用.net实现的Python解释器。不存在GIL锁。
- 3.PyPy:用Python实现的Python解释器。存在GIL锁。
GIL虽然是一个假的多线程。但是在处理一些IO操作上(例如写文件和网络请求),可以很大程度的提高效率。在IO密集型操作上建议使用多线程,但是在一些CPU密集型操作上不建议使用多线程,而建议使用多进程。
作者:奔跑的金鱼