全局解释器锁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 条评论
 下一页