GIL 锁

---恢复内容开始---

1.同步锁(掌握)

 

2.死锁,递归锁(掌握)

 

3同步对象,信号量(了解)

 

4 队列(重点)----生产者,消费者模型的创建

 

5 进程(重点)

 

并发&并行

并发:是指系统具有处理多个任务(动作)的能力

并行:是指系统具有 同时  处理多个任务(动作)的能力

并行是并发的一个子集

 

 

同步  与  异步

同步:当进程执行到一个IO操作(等待外部数据)的时候你,--------等:同步

异步:                        ---------不等:异步,一直等到数据接收成功,再回来处理

异步的执行效率要比同步的高

 

 

问题:开多线程时,多核没有用上

 

GIL:全局解释锁

  因为有GIL,所以,同一时刻,只有一个线程被cpu执行

 

处理方法:多进程+协程

 

任务种类:IO密集型  

      计算密集型

对于IO密集型的任务,Python的多线程时有意义的

          可以采用多进程+协程

对计算密集型的任务,Python的多线程就不推荐,Python就不适用了

 

 

 

协程:  协作式,-------非抢占式的程序。线程进程都是程序自己切换的。协程是有程序员编码时自己来决定何时切换

   协程本质上就是一个线程

  优点:1.没有切换的消耗,2,没有锁的概念

  缺点:不能用多核。但可以用多进程+协程来解决此问题

 

yield(协程)

用户态切换

key:什么时候切换

posted @ 2018-05-04 14:39  阜阳小全  阅读(97)  评论(0编辑  收藏  举报