Python3 GIL(Global Interpreter Lock)与多线程
GIL(Global Interpreter Lock)与多线程 GIL介绍 GIL与Lock GIL与多线程 多线程性能测试 在Cpython解释器中,同一个进程下开启的多线程,同一时刻只能有一个线程执行,无法利用多核优势。 GIL并不是Python的特性,他是在实现Python解释器(Cpython)时所引入的一个概念,因为Cpython是大部分环境下默认的Python执行环境。 所以要明确一点:GIL并不是Python的特性,Python完全可以不依赖于GIL 一 GIL介绍 GIL本质就是一把互斥锁,既然是互斥锁,所有互斥锁的本质都一样,都是将并发运行变成串行,控制同一时间内共享的数据只能被一个任务修改,保证数据安全。 有了GIL的存在,同一时刻同一进程中只有一个线程被执行(无法利用多核) GIL保护的是解释器级的数据,保护用户自己的数据则需要自己加锁处理 要想了解GIL,首先确定一点:每次执行python程序,都会产生一个独立的进程。例如python test.py,python aaa.py,python bbb.py会产生3个不同的python进程 ''' #验证python test.py只会产生一个进程 #test.py内容 import os,time print(os.getpid()) time.sleep( 1000 ) ''' python3 test