赞
踩
又称全局解释器锁,本质是互斥锁
每个线程在执行的过程都需要先获取GIL锁,保证同一时刻只有一个线程可以执行代码。
由于GIL的存在,在Python上开启多个线程时,每个单独线程都会在竞争到GIL后才运行,因此在我们的Python语言中多线程其实是假的多线程,它只会在一个CPU上运行。
即使在具有多核CPU中,Python的多线程也是串行执行的,并不会同一时间多个线程分布在多个CPU上运行。
作用:限制多线程同时执行,阻止同一个进程下多个线程的同时执行
python是动态强类型语言 ,因为有垃圾回收机制,如果同一个进程下有多个线程同时在执行,垃圾回收是线程(同一个进程下的变量是共享的),该线程做垃圾回收时,如果其他线程在运行就可能会产生并发安全问题(数据安全的问题),由于当时只有单核CPU(即便开始多线程,同一时刻也只有一个线程在运行),作者强行加了GIL锁,为了保证在一个进程内,同一时刻只有一个线程,目的就是为了防止垃圾回收机制回收垃圾时出现数据紊乱 的问题,所以加了它。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。