进程:
概念:对各种资源管理的集合。(线程也是一种资源)
使用场景:CPU密集型运算,调用多进程,通过socket传输数据
线程:
概念:CPU运算的最小单元
使用场景:没有明确的切换条件,只能通过定时器切换
注:python中只允许单线程操作内存中数据,也就是说用python即使开了多个线程实际上也是切换执行,并没有利用CPU的多核性能。究其原因,是python的全局解释器锁(GIL)。个人觉得,设计GIL与python的出发点相符,让程序更加简单,节省程序员时间,所以应用粗粒度的线程锁可以免去程序员对线程锁的繁杂操作。python也并不是设计成解决CPU密集型的计算问题,所以多线程的应用在解决非CPU密集型问题上没什么帮助。python作为胶水语言,可以通过黏合其他语言来解决此类问题。
协程:
概念:用户态的轻量级线程
使用场景:有明确的切换条件
注:事件驱动本质上就是协程的思维。通过I/O多路复用(select、poll、epoll)方式来解决服务器与客户端数据收发的问题。