Python学习 Day55 多线程的GIL锁 05

多线程的GIL锁

一、GIL锁简介

GIL锁

  • Python自带的解释器是CPython
  • CPython解释器的多线程实际上是一个假的多线程(在多核CPU中,只能利用一核,不能利用多核)
  • 同一时刻只有一个线程再执行,为了保证同一时刻只有一个线程在执行,CPython解释器使用了全局解释器锁GIL(Global Intepreter Lock)

常见的Python解释器

  • 1.Jyphon:用Java实现的Python解释器,不存在GIL锁
  • 2.IronPython:用.net实现的Python解释器,不存在GIL锁
  • 3.PyPy:用Python实现的Python解释器,存在GIL锁

GIL虽然是一个假的多线程,但是在处理一些IO操作(如文件读写和网络请求)时,也可以明显提升效率


二、GIL锁与Lock锁的区别

GIL锁无法保证共享资源的准确性

GIL锁 Lock锁
GIL可以保证全局同一时刻只有一个线程在执行,但是无法确保执行代码的原子性 保证多个线程访问全局变量时的数据准确性

猜你喜欢

转载自blog.csdn.net/ShengXIABai/article/details/116898744