大家好,我是杨数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原创,欢迎关注,带你一起长知识。
文章来源:《电脑编程技巧与维护》 网址: http://www.dnbcjqywh.cn/zonghexinwen/2021/0302/735.html
电脑编程技巧与维护投稿 | 电脑编程技巧与维护编辑部| 电脑编程技巧与维护版面费 | 电脑编程技巧与维护论文发表 | 电脑编程技巧与维护最新目录
Copyright © 2018 《电脑编程技巧与维护》杂志社 版权所有
投稿电话: 投稿邮箱: