python 基础 进程,线程,协程,并发并行,异步同步的定义

进程,线程,协程

进程:是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。

​ 用大白话说就是系统执行某一项过程的行为,比如你用浏览器在线播放器播放一个神奇的小视频,而播放小视频这个行为就是一个进程。如果你决定缓存有点慢,又打开了一个新浏览器窗口,选择了另一个神奇的小视频,这就是两个进程。所以进程才说是一段程序的执行过程,而不是运行某个程序。所以记住运行一个程序会运行一个或者一个以上的进程。

线程:是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。

还是大白话解释,还用浏览器在线播放小视频解释,比如再播放的时候一边播放一边缓存,而缓存如果比播放快的话,就很明显发现播放时间条和缓存条是分开的,也就是两个线程做不同的事情。

协程:协程是一种任务调度机制,它可以让你用逻辑流的顺序去写控制流,而且还不会导致操作系统级的线程阻塞。所以说协程本身就是一种对线程资源分配的合理应用的方式。

对于这个概念,网上很多说法,但是简单的说就是:可以在单线程中切换其行为的方式。前面说过python的中的一个GIL(全局解释器锁详情)中说过,python在某一个时刻只能执行一个线程,但是在IO的时候就会释放这个锁,这个时候有时会傻傻等待IO的返回结果,在按照逻辑顺序执行下去,而协程却可以调度这个线程去做其他事情,等IO执行完毕后在回来执行其后面操作。

异步同步与并行并发

异步和同步,很多人会将其和并行和并发混淆,但是其确实两个不同的定义,所以我们简单的说一下吧。

**并发 **:当有多个线程在操作时,如果系统只有一个CPU(而此cp是单核),则它根本不可能真正同时进行一个以上的线程,它只能把CPU运行时间划分成若干个时间段,再将时间 段分配给各个线程执行,在一个时间段的线程代码运行时,其它线程处于挂起状。这种方式我们称之为并发。

并行:当系统有一个以上CPU(如果单核需要多个cpu,如果是多核的化,一个cpu也可以)时,则线程的操作有可能非并发。当一个CPU执行一个线程时,另一个CPU可以执行另一个线程,两个线程互不抢占CPU资源,可以同时进行,这种方式我们称之为并行。

**同步:**当执行某一个程序的时候,会按照第一步,第二步等 顺序执行,也就是说当第一步执行完毕后,第二步才会执行。如果第一步执行需要时间,那也是等着其执行完毕才可以执行下一步。

​ 同步举例:就是看两个人在饭店吃饭(分别两桌,不是一起的),第一个客人点了一道烤全鸭,第二个客人下单一个拍黄瓜。厨子看见第一个客人小程序下单,就开始做烤鸭c,然后等了半个小时做完,然后上菜给第一个顾客。忙完第一个顾客的。然后看第二个订单,然后就做开始做拍黄瓜,最后给第二个客人上菜。

异步: 异步是指进程不需要一直等待下去,而是继续执行下面的操作,不管其他进程的状态,当有信息返回的时候会通知进程进行处理,这样就可以提高执行的效率了,即异步是我们发出的一个请求,该请求会在后台自动发出并获取数据,然后对数据进行处理,在此过程中,我们可以继续做其他操作,不管它怎么发出请求,不关心它怎么处理数据。

​ 异步举例:还是那个例子,就是看两个人在饭店吃饭(分别两桌,不是一起的),第一个客人点了一道烤全鸭,第二个客人下单一个拍黄瓜。厨子看见第一个客人小程序下单,就开始做烤鸭,然后将鸭子放进炉子,厨子一看还有一个订单,然后就开始做拍黄瓜,然后一边注意着烤鸭是否烤好。如果拍黄瓜做的好了,烤鸭还没有好,就先上拍黄瓜。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值