进程是cpu分配资源的最小单位:
- 进程的创建、撤销和切换的开销比较大。
线程也叫轻量级进程,它是一个基本的CPU执行单元:
- 线程的引入减小了程序并发执行时的开销,提高了操作系统的并发性能。线程没有自己的系统资源
关系:
- 线程是属于进程的,线程运行在进程空间内,同一进程所产生的线程共享同一内存空间。当进程退出时该进程所产生的线程都会被强制退出并清除。
协程:
- 对于多线程应用,CPU通过切片的方式来切换线程间的执行,线程切换时需要耗时。协程,则只使用一个线程,在一个线程中规定某个代码块执行顺序,由程序自身控制执行顺序
GIL:全局解释器锁
- 保证同一时刻只有一个线程对共享资源进行存取
- GIL的存在导致多线程无法有很好的多核CPU的并发处理能力
- 只有IO Bound场景下得多线程会得到较好的性能