Python中的线程为什么不是并行的?GIL是什么?
目录
- 更多分享:http://www.catbro.cn
一、前言:
- 本次我们主要目标是理解为什么python中的多线程开发效果不咋的。
- 为什么多线程也不能并行操作。
- GIL又是什么呢?
二、理解
- 由于Python解析器的设计,Python中存在有一个全局解析器锁,其限制是在同一时间内,Python解析器只能运行一个线程的代码。
- 也就是说,即使你在一个进程中使用了多线程开发,在同一时间内,也只有一个线程的代码会被真正的执行,这大大降低了多线程的性能。
- 从电脑硬件来说,因为同一时间内只有一个线程被执行,所以,即使你是多核CPU,也只能发挥一个核的性能。
- 当然,我们可以通过多进程+线程+异步IO来发挥我们CPU的最大性能。