进程
进程就是应用程序的启动实例。比如我们运行一个游戏,打开一个软件,就是开启了一个进程。
进程拥有代码和打开的文件资源、数据资源、独立的内存空间。
进程是系统进行资源分配的基本单位
线程
线程从属于进程,是程序的实际执行者。一个进程至少包含一个主线程,也可以有更多的子线程。线程拥有自己的栈空间。
协程
协程,英文Coroutines,是一种比线程更加轻量级的存在。正如一个进程可以拥有多个线程一样,一个线程也可以拥有多个协程。
最重要的是,协程不是被操作系统内核所管理,而完全是由程序所控制(也就是在用户态执行)。这样带来的好处就是性能得到了很大的提升,不会像线程切换那样消耗资源。
进程和线程的区别
1、进程是资源分配的最小单位,线程是CPU调度的最小单位。
2、线程不能看作是独立应用,而进程可看作独立应用。
3、进程有独立的地址空间,线程没有独立的地址空间,多个线程共享进程的资源。
4、进程间切换代价大,线程间切换代价小。
线程和协程的区别
1、 一个线程可以多个协程,一个进程也可以单独拥有多个协程,这样python中则能使用多核CPU。
2、线程进程都是同步机制,而协程则是异步
3、 协程能保留上一次调用时的状态,每次过程重入时,就相当于进入上一次调用的状态