进程基础,并发,并行,阻塞,同步,异步
并发并行,同步异步。
并发、并行是相对于计算机系统来说
同步,异步是相对于应用程序来说的
为什么计算机要有进程?
当一道程序因I/O请求而暂停运行此时CPU需要等待I/O操作完毕才能进行,这段时间
造成CPU空闲,为了这段时间更好的利用CPU便有了进程的概念,也就是在I/O操作
时CPU便立即转去运行另一道程序。
什么是进程?
进程是计算机中的最小的资源分配单位。进程(Process)就是正在执行的应用程序,是软件的执行副本。
进程之间相互独立,数据相互隔离,占用资源相对较多
开启多进程的意义
1.为了更好的利用CPU,所以如果我们的程序中都是网络IO,文件IO就不适合起多进程
2.为了数据的隔离,如果我们的程序中总是要用到数据共享,那么就不适合使用多进程
3.超过了cpu个数的任务数,都应该使用进程池来解决问题,而不能无限的开启子进程
什么是是程序?
程序是指令和数据的有序集合
并发 并行?(并发、并行是相对于计算机系统来说)
并发 资源有限的情况下,同一时间段多个任务交替执行(并发相当于一个人做完一个任务再做下一个任务)
并行 同一时刻多个任务同时执行(并行相当于用了分身术多个分身同时执行多个任务)
你吃饭吃到一半,电话来了,你一直到吃完了以后才去接,这就说明你不支持并发也不支持并行。
你吃饭吃到一半,电话来了,你停了下来接了电话,接完后继续吃饭,这说明你支持并发。
你吃饭吃到一半,电话来了,你一边打电话一边吃饭,这说明你支持并行。
并发的关键是你有 在一段时间内 处理多个任务的能力,不一定要同时。
并行的关键是你有 同一时刻 处理多个任务的能力,强调同时。
谈对并发的理解?
当需要同时执行多个任务,但资源有限,我们可以通过
开多进程,多线程,协程来实现并发,来提高用户体验。
什么是同步 什么是异步?(同步,异步是相对于应用程序来说的)
同步 一个任务的执行必须依赖另一个任务的结束,强调的是多个任务的顺序性
一定要等任务执行完了,得到结果,才执行下一个任务。
异步 多个任务可以同时进行
不等任务执行完,直接执行下一个任务。
谈谈对异步非阻塞的理解?
异步是一个任务的执行不需要等待另一个任务的结束例如start(开启一个进程)terminate(结束一个进程)
非阻塞就是没有阻塞,程序中没有IO操作,
程序中的应用 :可以用socket对象调用setblocking(False)来设置非阻塞
阻塞与非阻塞
阻塞:在程序中的I/O 操作 input sleep recv accept recvfrom等操作会造成阻塞
非阻塞 :不需要等待就可以直接完成的事情
https://www.zhihu.com/question/267866765
https://www.zhihu.com/question/26393784
进程的三状态图