进程.线程.协程之间的区别?
进程.线程.协程之间的区别?
答:进程是计算机资源分配的最小单位,主要用于数据隔离.
线程是计算机工作的最小单位,计算机真正工作的就是线程
那么在一个进程中可以有多个线程而一个应用程序可以有多个进程
他们的应用场景基本上在其他语言里应该是没有多进程这个概念的,他们都是多线程,而在Python里面其实有那么一说.
就是在I/O操作多时,用多线程,计算密集型时,用多进程,那为什么呢?其实就是在Python内部有个GIL锁,GIL锁使得在同一时刻,
在一个进程中只有一个线程被CPU调度,如果想利用CPU的多核优势,就是开多个进程,而开多个线程没有用,所以在计算密集型时开多进程
因为I/O操作不占用CPU,所以I/O操作可以用多线程,以上是进程与线程的以及应用场景上的区别
在程序员这个级别为了能够让代码变的更牛逼,就创建了协程,这个协程本来就是不存在的,是程序员创建的,
协程本身可以让程序员人为的控制一个线程片在代码块之间切换,本身协程的存在不重要,但是要跟I/O操作结合到一起就牛逼了.
当协程中遇到I/O操作就跳过,干其他的事,相当于让这个线程分片去执行,达到的效果就是线程一直在工作,没有停.
那么Pyhton中在用协程的时候有个模块叫greenlet,实现协程加I/O操作的模块用gevent
进程线程协程之间的区别大致也就这么多