Python GIL

首先需要明确的一点是GIL并不是Python的特性,它是在实现Python解析器(CPython)时所引入的一个概念。

GIL保护的是解释器级的数据,保护用户自己的数据则需要自己加锁处理。

有了GIL的存在,同一时刻同一进程中只有一个线程被执行。

 

当程序是计算密集型程序时:(多进程效率高)

  多进程就会有很大的优势。

  而多线程没有优势,因为同一时刻同一进程中只能有一个线程被执行。所有的计算都是串行的。

 

当程序是I/O密集型程序时:(多线程效率高)

  多进程就没有优势了,虽然多进程的处理速度会快一些,但是开启进程的速度较满,开销很大。大部分时间花费在了开启进程上,所以开启的进程越多,处理程序花费的时间越多。

  而线程的开启速度很快,开销可以忽略不计,当一个线程遇到I/O时会切换到另一个程序执行,总计花费的时间是耗时最久的那个从程序。

 

以上仅对于对于Cpython解释器而言。

posted @ 2018-04-18 18:55  流星之泪  阅读(93)  评论(0编辑  收藏  举报