zoukankan      html  css  js  c++  java
  • 进程基础,并发,并行,阻塞,同步,异步

    并发并行,同步异步。

    并发、并行是相对于计算机系统来说

    同步,异步是相对于应用程序来说的

    为什么计算机要有进程?

    当一道程序因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

    进程的三状态图

  • 相关阅读:
    图数据库的选择与对比(Neo4j)
    pip install ahocorasick报错以及Requirement already satisfied问题
    从知识图谱到认知图谱: 历史、发展与展望
    kafka(一)—— kafka安装简单使用
    python管理docker
    Javaweb前后端分离项目docker部署
    django + uwsgi + nginx部署(前后端不分离)
    坑(八)—— LayUI框架中append新的元素的问题
    docker(三)—— 避免一直输入sudo
    坑(七)—— 表单提交方式
  • 原文地址:https://www.cnblogs.com/chen55555/p/10322990.html
Copyright © 2011-2022 走看看