操作系统的底层是 进程 线程 实现的
进程
操作系统完成系统进程的切换,中间有状态的保存。进程有自己独立的空间,进程多,资源消耗大
进程是最小的资源管理单位
可以理解为盛放线程的容器
线程
线程是最小的执行单位
串行、并行、 并发 、
并行有多个CPU
并发只有一个CPU
GIL
CPython同一时刻只有一个线程被执行
Threading 多线程
- 实例化方法
- 类的继承 还要重写run方法
join SetDemon
是实例化的对象应用的
join 是主线程等子线程4
setDaemon 守护线程
程序直到不存在非守线程的时候退出
也就是需要等待非守护线程结束
同步锁(互斥锁)
由于多线程共用数据
CPU只要有IO操作,就进行切换,但是同步锁锁住了后,切换完第一步后就还是回来处理加锁的
死锁
是两个不同的锁
刚释放的锁接着加锁,别的对象抢不到
释放锁的有对锁的优先级
递归锁
内部计数器
只要计数器大于0 别人就不能抢
event (不是锁)
event和队列的join task_done是一个原理
两个线程通信的过程,多个线程之间能通过设置标志位来改变另一个线程的
Flag默认是False,是阻塞的其他线程set之后就变成True
radis
信号量 (是锁)
自己能控制同时几个能获得锁,和同步锁进行对比
限制连接的量,限制同时访问的数量
这就是连接池的概念