GIL 全局解释器

时间:2021-08-11 11:17:16

全局解释器锁 GIL

相当于给python解释器加了一把互斥锁

每一个进程都有一把互斥锁,所有线程必须先拿到解释器,才能执行代码,

同一进程下,所有线程并发

在 Cpython 解释器下,多个进程可以并行

python 垃圾自动回收机制 不是线程安全的

线程与进程在什么情况下用

( 1 ) 计算密集型(CPU有关):利用多进程来解决

( 2 ) IO密集型(涉及读写文件过多的):利用多线程来解决

GIL 与 自定义互斥锁优先级

线程优先找到GIL锁,再拿到自定义的锁

Event 事件 (发出信号指示,代码才运行)

event.set()  发出同行信号

event.wait()  在等发出信号

线程queue

queue.Queue 对列(先进先出)

queue.LifeQueue 堆栈(后进先出)

queue.PriorityQueue 优先级对列,数字越小,优先级越高

信号量 Semaphore

sm = Semaphore(5)  最多5个线程一起运行

sm.acquire()

sm.release()