全局解释器锁GIL与线程互斥锁
2022-01-23 02:17:25 2 举报
描述一个进程下的线程无法利用多核优势的原因,及全局解释器锁GIL与线程互斥锁之间搭配使用时的流程走向。
作者其他创作
大纲/内容
获取变量
GIL.release
CPU3
线程3
有线程锁
GIL.acquire
由于还有线程锁等IO结束后继续执行后面代码
python解释器
sleep(IO1)
注:多线程使用线程锁,消耗性能保证数据的准确性;顾多线程多适用于IO集中的场景
code
线程1
文本
多核CPU
thread.release
垃圾回收线程
切换到其它线程
sleep(IO2)
四核CPU
CPU5
后面的代码执行顺序需要继续靠抢GIL锁决定优先级
线程2
无线程锁
遇到IO后释放全局锁
线程锁释放后切换到其它线程
thread.accquare
CPU4
CPU2
CPU1
GIL:一个进程内只有一个独立的python解释器
收藏
收藏
0 条评论
下一页