python全栈开发_day35_锁,进程池,线程池

1.GIL
全局解释器锁 只在Cpython解释器中
由于Cpython内存管理不是线程安全的!

2.内存管理>>>垃圾回收机制
1.引用计数
2.标记清除
3.分代回收

3.同一进程下的多个线程在同一时刻只能有一个线程被执行


4.线程是直接能够被cpu执行吗?
必须先抢解释器才能被cpu执行



5.GIL是加在Cpython解释器上的一把锁,并不能保证数据的安全
如果你想保证数据的安全,就必须加不同的锁



6.GIL与普通的互斥锁的区别


7.死锁与递归锁
即便你记住了没acquire一次就release一次的操作,也会产生死锁现象

递归锁:可以连续的acquire(),每acquire()一次计数加一


8.信号量
如果把互斥锁比喻成独立卫生间,那么信号量就相当于多个卫生间


9.event事件
event = Event()

event.set() # 告诉另外一个子线程 你可以运行了

event.wait() # 等待别人给我发set()信号

10.线程q
消息队列
普通的q 队列 先进先出
LIFO 堆栈 先进后出
优先级q q.put((数字,数据)) 数字越小优先级越高

猜你喜欢

转载自www.cnblogs.com/xuxingping/p/10853911.html