 
      
      对于CPU密集型的单核处理,采用多线程。
对于CPU密集型的多核处理,采用多进程。
对于IO密集型的场景,采用多线程。
 对于IO密集和CPU密集型的混合场景,综合考虑进进程和线程,可以一开始配置一个进程池,将可能的CPU密集型的任务交给进程池去完成,将IO密集型的任务交给线程。
 
      
       
      
      操作系统中进程与线程直观认识
 
      
      重点是 单线程性能不降低时,GIL才有可能去除,换言之,多线程方式有可能减低单线程性能 ?
 
      
      GIL 的 意义
 
      
      GIL起源
 
      
      python 调用 .so
 
      
      解决GIL方案
 
      
      除了 Cpython ,其他语言实现的 python 几乎都没有使用引用计数的方式,可以避免GIL 带来的问题
 
      
      IO核 CPU密集型解决方案
 
      
      python 多核解决方案
三个维度:
CPU
操作系统
Python
 
      
      GIL 多进程解决方案
 
      
      python GIL
 
      
      进行与线程的关系
 
      
      多线程与异步
 
      
      进程与线程
 
      
       
      
      很好很好很好很好很好很好很好很好
 
      
      很好很好很好很好很好很好很好很好
 
      
       
      
      GIL实在底层的一把锁,是butecode字节码级别的互斥锁,保证同一时刻只有一个线程来控制Python解释器。
 
      
      GIL存在的意义
GIL在单核时代最初的目的是解决资源引用计数的安全性问题
IO密集型的任务,可以用多线程;CPU密集型的任务,推荐多进程
Python现有的C扩展在很大程度上依赖GIL提供的解决方案,如果要更改GIL,则需要重新解决这些库的线程安全问题
 
      
      操作系统中的进程与线程
 
      
      操作系统中的进程与线程
 
      
      GIL (Global Interpreter Lock)  --  全局解释器锁
