Python 多线程 多进程 实现并行 和并发

Xanthe ·
更新时间:2024-11-14
· 585 次阅读

此文转载自 知乎问题评论: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万+ 关注 私信 展开阅读全文
作者:好逸爱劳



并行 进程 并发 多进程 多线程 线程 Python

需要 登录 后方可回复, 如果你还没有账号请 注册新账号