GIL是一个全局解释器锁,保证同一时刻只有一个线程在运行。
如图,CPU1其实在不同的线程之间来回切换,比如,前两分钟在线程1,然后保存线程1跑到线程2,然后到线程3,等等。
Cpython解释器无法保证内存安全,多个线程的时候,可能出错,因而,引进了GIL,全局解释器锁,保证同一时刻只能有一个线程在运行。那它为什么也高效率呢?因为,在处理IO操作的时候,因为切换线程的时间短,可以忽略的程度,所以,可以高效率处理。就像图中,线程1可能是下载第一张图,线程2下载第二张图。
GIL是一个全局解释器锁,保证同一时刻只有一个线程在运行。
如图,CPU1其实在不同的线程之间来回切换,比如,前两分钟在线程1,然后保存线程1跑到线程2,然后到线程3,等等。
Cpython解释器无法保证内存安全,多个线程的时候,可能出错,因而,引进了GIL,全局解释器锁,保证同一时刻只能有一个线程在运行。那它为什么也高效率呢?因为,在处理IO操作的时候,因为切换线程的时间短,可以忽略的程度,所以,可以高效率处理。就像图中,线程1可能是下载第一张图,线程2下载第二张图。