此文转载自 知乎问题评论:https://www.zhihu.com/question/315908877/answer/975306735
GIL 全局解释器锁:GIL(全局解释器锁,GIL 只有cpython有):
在同一个时刻,只能有一个线程在一个 CPU 上执行字节码,没法像 c 和 Java 一样将多个线程映射到多个 CPU上执行,但是GIL会根据执行的字节码行数(为了让各个线程能够平均利用CPU时间,python会计算当前已执行的微代码数量,达到一定阈值后就强制释放GIL)和时间片以及遇到IO操作的时候主动释放锁,让其他字节码执行。
说白了GIL就是伪多线程,一个线程运行其他线程阻塞,使你的多线程代码不是同时执行,而是交替执行。
python的多线程:由于GIL的原因,一个CPU同一个时刻只能执行一个线程,但是当遇到IO操作或者运行一定的代码量的时候就会释放全局解释器锁,执行另外一个线程。
多线程能够有效提升I/O阻塞型程序的效率;
与进程相比,占用的系统资源少;线程间能够共享资源,方便进行通信。python的多线程通过threading实现。
原创文章 165获赞 359访问量 17万+
关注
私信
展开阅读全文
作者:好逸爱劳