Python GIL

一、Python GIL

==GIL== :全局解释器锁。每个线程在执行的过程都需要先获取GIL,保证同一时刻只有一个线程可以执行代码

Python多线程的影响:

  • python语言和GIL没有关系,仅仅是由于历史原因在Cpython虚拟机,难以移除GIL
  • 线程释放GIL锁的情况:在IO操作等可能会引起阻塞的system call之前,可以暂时释放GIL,但在执行完毕后,必须重新获取GIL,Python3使用计时器
  • Python使用多进程是可以利用多核的CPU资源的
  • 多线程爬取比单线程性能有提升,因为遇到IO阻塞会自动释放GIL锁

==主线程==死循环

while True:
    pass

2个==线程==死循环

import threading

# 子线程死循环
def test():
    while True:
        pass

t1 = threading.Thread(target=test)
t1.start()

# 主线程死循环
while True:
    pass

2个==进程==死循环

import multiprocessing

def deapLoop():
    while True:
        pass
        
# 子进程死循环
p1 = multiprocessing.Process(target=deapLoop)
p1.start()

# 主进程死循环
while True:
    pass
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 必备的理论基础 1.操作系统作用: 隐藏丑陋复杂的硬件接口,提供良好的抽象接口。 管理调度进程,并将多个进程对硬件...
    drfung阅读 3,856评论 0赞 5
  • GIL 是什么东西?它对我们的 python 程序会产生什么样的影响? 我们先来看一个问题。运行下面这段 pyth...
    lintong阅读 1,599评论 0赞 32
  • GIL介绍 python全局解释器锁(global interpreter lock, GIL)限制了任何时候只能...
    慢手暗夜阅读 2,709评论 0赞 0
  • 前言 本篇文章主要是看完UnderstandingGIL.pdf后的一些理解 http://www.dabeaz....
    钢筋铁骨阅读 1,449评论 0赞 50
  • GIL是什么 GIL并不是Python的特性,它是在实现Python解析器(CPython)时所引入的一个概念,而...
    StormZhu阅读 4,198评论 0赞 3

友情链接更多精彩内容