Hi!请登陆

第94p,并发编程的基础概念

2021-3-2 18 3/2

大家好,我是杨数Tos,这是《从零基础到大神》系列课程的第94篇文章,第三阶段的课程:Python进阶知识:网络编程之并发编程的基础概念。

要想真正理解并发非阻塞的原理,就得把一些基础概念理解清楚;包括:并发、并行、单道与串行、多道与并行、阻塞与非阻塞、多道技术这些概念。

也许你看到这么多专业名词会感觉到懵,实际上整合起来就是两种概念,只是这两种概念中有些不同的内容;(唉!没办法,人类天生就喜欢用一些高深的词汇来展示自己的能力)

1、单道技术与串行

单道技术与串行:单道与串行的结合,就是同时只能运行一个程序,想切换或运行新的程序,必须等到当前程序停止,然后才能运行新的程序;

举例:打开程序A、B、C分别需要1、2、3秒,则将3个程序打开则需要1+2+3=6秒。

2、并发与多道技术

并发:看起来是同时运行多个进程,实际是利用CPU的效率,不断切换不同进程,让人感觉多个进程在同时运行,这就是并发;

多道技术:以前的计算机的CPU一般都只有一个核,并不像现在这样有双核、4核;单核CPU则表示同时只能运行一个程序,为了让单核实现同时运行多个程序的效果就是多道技术。(详细可以看上一篇文章)

3、并行与多道技术的结合

并行:真正意义上的同时执行多个进程。

多道技术的核心是切换进程+保存进程状态;而并行是可以真正意义上允许执行多个进程;

如果多个任务同时执行,执行时间取决于,最长时间的任务。

举例:打开程序A、B、C分别需要1、2、3秒,则将3个程序打开则需要3秒。

4、阻塞与非阻塞

阻塞与非阻塞描述的时程序当前的状态,阻塞就表示程序正在阻塞态,非阻塞就表示正在就绪态或运行态;

5、同步与异步

同步就是任务提交之后,原地等待任务的返回结果,等待过程中不做任何事;(就是单道)

异步就是任务提交之后,不等任务的返回结果,CPU去做其他事情;等任务执行完成之后,再返回任务的执行结果;异步在程序的表现给人感觉就是“同时在运行多个程序”。

总结:

前面讲了那么多概念,其实一直都是在讲两种概念;

一种是同步与阻塞,如果有多个程序在运行,就得排队,一个一个来,因为只有一个门进出;

一种是异步非阻塞,如果有多个程序在运行,不需要排队等待,因为有N个门可供进出,如果有谁堵在门口不动了(等用户下命令),计算机会将这个程序先移开,继续执行下一个程序;用户下了新命令了,再继续执行刚刚移开的程序。

所以程序运行中,最理想最高效的方式就是异步非阻塞(asyncio)。

以上是本期内容,如果有表达不对的内容,欢迎您的留言、斧正,我们一起天天向上。

感谢您的阅读,您的三连【关注、点赞、收藏】就是对我最大的支持,谢谢!

本文由杨数Tos原创,欢迎关注,带你一起长知识。

相关推荐