美文网首页
Python GIL

Python GIL

作者: YugerH | 来源:发表于2020-02-15 11:48 被阅读0次

    一、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
    

    相关文章

      网友评论

          本文标题:Python GIL

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