GIL 全局解释器

全局解释器锁 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()

posted @ 2018-09-07 15:06  星牧  阅读(173)  评论(0编辑  收藏  举报