python 线程,进程,携程
进程:正在进行的一个过程或者说一个任务,而负责执行任务的则是CPU,进程本身是一个抽象的概念,即进程就是一个过程、一个任务。
进程之间是如何做到并发的:CPU在各个任务之间来回的进行切换,并在切换的过程当中保存当前
进程的执行状态(保存蛋糕的执行过程)。
进程与程序的区别:程序相当于菜谱,而进程相当于做菜的整个过程。
并行和并发:
并行:多个任务同时运行,只有具备多个cpu才能实现并行,含有几个cpu,也就意味着在同一时刻可以执行几个任务。
并发:是伪并行,即看起来是同时运行的,实际上是单个CPU在多道程序之间来回的进行切换。
同步与异步:
同步就是指一个进程在执行某个请求的时候,若该请求需要一段时间才能返回信息,那么这个进程将会一直等待下去,直到收到返回信息才继续执行下去。
异步是指进程不需要一直等下去,而是继续执行下面的操作,不管其他进程的状态。当有消息返回时系统会通知进行处理,这样可以提高执行的效率。
打电话的过程就是同步通信,发短信时就是异步通信。
进程:
创建进程的两种方式
第一:继承Process类,并重写run方法
第二:直接通过进程类Process进行创建,直接指定target
进程池:
线程 :一个进程里面至少有一个控制线程,进程的概念只是一种抽象的概念,真正在CPU上面调度的是进程
里面的线程 如同一个QQ开启多个对话窗口
单线程:
多线程:
Python中线程的特点
在其他语言当中,一个进程里面开启多个线程,每个线程都可以给一个cpu去使用,但是在python当中,在同一时刻,一个进程当中只能有一个线程处于运行状态。
协程: 又称微线程
协程看上去是子程序,但执行过程中,在子程序内部可中断,然后转而执行别的子程序,在适当的时候再返回来接着执行。
协程有何优势?
最大的优势就是协程极高的执行效率。因为子程序切换不是线程切换,而是由程序自身控制,因此,没有线程切换的开销,和多线程比,线程数量越多,协程的性能优势就越明显。
第二大优势就是不需要多线程的锁机制,因为只有一个线程,也不存在同时写变量冲突,在协程中控制共享资源不加锁,只需要判断状态就好了,所以执行效率比多线程高很多。
一句话总结协程的特点:
“子程序就是协程的一种特例。”