首页 > 代码库 > 区分python进程、线程、携协程

区分python进程、线程、携协程

进程:

  概念:对各种资源管理的集合。(线程也是一种资源)

  使用场景:CPU密集型运算,调用多进程,通过socket传输数据

 

线程:

  概念:CPU运算的最小单元

  使用场景:没有明确的切换条件,只能通过定时器切换

  注:python中只允许单线程操作内存中数据,也就是说用python即使开了多个线程实际上也是切换执行,并没有利用CPU的多核性能。究其原因,是python的全局解释器锁(GIL)。个人觉得,设计GIL与python的出发点相符,让程序更加简单,节省程序员时间,所以应用粗粒度的线程锁可以免去程序员对线程锁的繁杂操作。python也并不是设计成解决CPU密集型的计算问题,所以多线程的应用在解决非CPU密集型问题上没什么帮助。python作为胶水语言,可以通过黏合其他语言来解决此类问题。

 

协程:

  概念:用户态的轻量级线程

  使用场景:有明确的切换条件

  注:事件驱动本质上就是协程的思维。通过I/O多路复用(select、poll、epoll)方式来解决服务器与客户端数据收发的问题。

区分python进程、线程、携协程