美文网首页
Python中的GIL锁

Python中的GIL锁

作者: Gi_So | 来源:发表于2019-10-28 09:28 被阅读0次

1、什么是GIL锁:

        GIL的全称是Global Interpreter Lock(全局解释器锁),GIL本质就是一把互斥锁,既然是互斥锁,所有互斥锁的本质都一样,都是将并发运行变成串行,以此来控制同一时间内共享数据只能被一个任务所修改,进而保证数据安全。保护不同的数据的安全,就应该加不同的锁。

2、那么GIL带来了什么影响呢?

       由于GIL锁的存在,Python里一个进程永远只能同时执行一个线程(拿到GIL的线程才能执行),这就是为什么在多核CPU上,Python的多线程显的很鸡肋的原因。无论机器上有都少个CPU,同一时间,只使用了一个CPU。

3、怎么解决由于GIL锁带来的问题?

       有了GIL的存在,python有这两个特点:

  ①、进程可以利用多核,但是开销大。

  ②、多线程开销小,却无法利用多核优势。

  也就是说Python中的多线程是假的多线程,Python解释器虽然可以开启多个线程,但同一时间只有一个线程能在解释器中执行,而做到这一点正是由于GIL锁的存在,它的存在使得CPU的资源同一时间只会给一个线程使用,而由于开启线程的开销小,所以多线程才能有一片用武之地。

  那python的多线程到底有没有用呢?,我们需要看任务是I/O密集型,还是计算密集型:

  如果是I/O密集型任务,有再多核也没用,即能开再多进程也没用,所以我们利用python的多线程一点问题也没有;

  如果是计算密集型任务,我们就直接使用多进程就可以了

相关文章

  • python入门系列:多线程

    python中的GIL GIL(Global Interpreter Lock),就是一个锁。 Python中的一...

  • Python进阶10

    多线程 python中的GIL GIL(Global Interpreter Lock),就是一个锁。 Pytho...

  • python中的GIL详解

    原文链接 GIL并不是Python的特性,Python完全可以不依赖于GIL。 ​ GIL 锁: 全局解释器锁,作...

  • ThreadPoolExecutor 线程池的使用

    写在前面:GIL锁 关于GIL锁:多线程在Python中并不一定是鸡肋CPython解释器存在GIL锁,一次只允许...

  • python多线程

    python基础之多线程锁机制 GIL(全局解释器锁) GIL并不是Python的特性,它是在实现Python解析...

  • GIL

    一,GIL的概念 python全局解释器锁。 二,GIL产生的原因 GIL 并不是 Python 语言的特性,它是...

  • Python day28_GIL 深拷贝浅拷贝

    GIL(全局解释器锁) GIL面试题如下 描述Python GIL的概念, 以及它对python多线程的影响?编写...

  • Python GIL 机制

    Python GIL(Global Interpreter Lock) 解释器锁 GIL本质就是一把互斥锁,将并发...

  • Python高级语法1:GIL锁&浅拷贝&深拷贝

    一、GIL锁 1.1、GIL面试题:描述Python GIL的概念, 以及它对python多线程的影响?编写一个多...

  • 008 12. python提高-1

    12.1. GIL GIL(全局解释器锁) GIL面试题如下 描述Python GIL的概念, 以及它对pytho...

网友评论

      本文标题:Python中的GIL锁

      本文链接:https://www.haomeiwen.com/subject/eyevvctx.html