面试概念题

进程、线程、协程的区别?程序员

进程:计算机用来分配资源的最小单元,本质上是用来处理数据隔离的。多线程

线程:cpu用来计算的最小单元,线程是真正用来作事的。并发

一个进程能够有多个线程。一个应用程序能够有多个进程。可是由于Python特有的GIL锁的缘故,形成了它和Java等语言多线程的差别,框架

在同一时刻,一个进程中只有一个线程能被cpu调度。因此在处理计算密集型数据时,须要开多进程来获取高效率。spa

在处理io密集型数据时,能够使用多线程提升效率。由于io操做不占用cpu线程。线程

GIL锁控制进程,本质上就是对Python的底层C语言上锁了。协程

协程:其实就是微线程。对线程进行切片,在不一样的时间,对多个线程片进行调度,遇到io操做,就去执行其余操做。当io操做的处理结果回来后,会切换回去。进程

协程自己是不存在的,是程序员为了达到控制代码的执行块而产生的。Python实现协程的模块greenlet ,实现协程+IO操做能够用模块gevent事件

单线程实现并发:资源

协程+IO切换 :模块gevent 

基于事件循环的IO非阻塞框架:Twisted

相关文章
相关标签/搜索