2021
03-23
03-23
Python 有可能删除 GIL 吗?
我们知道,在CPython中,有一个全局解释器锁,英文叫globalinterpreterlock,简称GIL,是一个互斥锁,用来保护Python世界里的对象,防止同一时刻多个线程执行Python的字节码,从而确保线程安全,这导致了Python的线程无法利用多核CPU的优势,因此有人说Python的多线程是伪多线程,性能不高,那么Python将来有可能去除GIL吗?要回答这个问题,先从GIL的起源进行分析。GIL的起源Python第一次发布是在1991...
继续阅读 >
先看一道GIL面试题:描述PythonGIL的概念,以及它对python多线程的影响?编写一个多线程抓取网页的程序,并阐明多线程抓取程序是否可比单线程性能有提升,并解释原因。GIL:又叫全局解释器锁,每个线程在执行的过程中都需要先获取GIL,保证同一时刻只有一个线程在运行,目的是解决多线程同时竞争程序中的全局变量而出现的线程安全问题。它并不是python语言的特性,仅仅是由于历史的原因在CPython解释器中难以移除,因为python语...
我们打开程序后,会发现电脑的内存和cpu发生了变化。在对于前者上面,自然是希望内容占用小,cpu的利用越高越好。那有没有什么方法可以让我们的cpu达到满状态的运行效果呢?这就得用到我们所学的多线程中的知识了,再正式开始讲解之前,我们先来说说操作的思路吧,然后进行代码对比。我们都知道,比方我有一个4核的CPU,那么这样一来,在单位时间内每个核只能跑一个线程,然后时间片轮转切换。但是Python不一样,它不管你有几个核...