Python并发编程理论篇,来看看

其实关于Python的并发编程是比较难写的一章,因为涉及到的知识很复杂并且理论偏多,所以在这里我尽量的用一些非常简明的语言来尽可能的将它描述清楚,在学习之前首先要记住一个点:并发编程永远的宗旨就是提高程序的运行效率,也是围绕CPU来进行优化的一种技术手段。

像我们之前学习过的网络编程中,我们只是基于socketserver模块让我们的Server端有了处理多任务的能力,但是我们并不了解它的底层是怎么做到的,在学习完并发编程后,尝试自己阅读一下socketserver源码,你将会大有收获。

并发编程很重要吗?是的,非常重要,如果你想进入PythonWeb领域那么著名的框架如Django,Tornado,Flask等等底层都是有基于本章节的知识点,如果你想进入爬虫领域那就更不用说了,非常强大的scrapy框架也是基于我们所学的这些东西累积起来的。

好了废话不多说,让我们开始进入并发编程的学习吧。

从任务处理角度看待操作系统发展史
  这一节主要是理论知识,了解计算机任务处理方式的演变过程,能够让我们更快的理解和学习并发编程。

首先,我们先来回顾一下操作系统方面的一些知识。

操作系统的作用:管理硬件,目的就是让用户更加方便的来操控计算机底层的硬件。

可以看到操作系统对于人们操控计算机进行作业有着不可小觑的功劳,那么在早期没有操作系统的时候你能想象是什么样子吗?现在我们来看一看。

无操作系统时任务的处理方式
  早期的计算机并没有操作系统,而是通过纸带来进行程序的编辑,它有三台设备分别是:输入机,计算机,输出机。

这个时代的计算机一次只能跑一个人的程序,没有其他干扰,那么它的缺点也很明显,一次只能一个人使用而后面想要使用的人必须得等待前一个人用完之后才行。其执行效率非常低下,最关键的就是人在进行与计算机交互的时候计算机的运算器是没有任何工作的,这就造成了资源上极大的浪费,那么这种浪费可以理解为I/O阻塞。

为了解决这个问题,批处理系统横空出世了。

批处理系统的诞生
  相比于前一代计算机处理任务的方式,批处系统的诞生让这一代计算机有了极大的进步,并且输入也不再使用纸带,而是采用磁带,批处理操作系统可以将多个用户的任务同时提交(但是不能同时运行)。

假设有三个程序员需要使用这台计算机,他们将自己的程序全部交由一个程序员让其进行人机之间的交互,那么这样就节省了三倍的时间。但是这样的缺点也很明显,只能等待三个人的程序全部处理完后大家才能拿到各自的结果,这个等待过程是十分漫长的。

在这里,出现了一种自动化的工作方式,计算机也就是中间的7094机器能够去区分出每个程序员自己的程序,那么其内部肯定是由一种代码支持它有了这种功能,那个这个就是批处理系统。

单处理的批处理系统最大的缺点依然还是拥有I/O阻塞,能不能把中间的两个小人全部干掉让计算机来做他们做的事儿呢?当然可以,但是…当时的人还没那么聪明。

image-20200629232414224

我们再来想一个问题,如果程序员A的程序出错了,它第一时间拿不到,返回会一直卡在那,程序员B和程序员C也不用拿了,反正都出不来。是不是很蛋疼?

后来慢慢的经过时间的积累与技术的成熟,针对这一代的批处理系统的缺点,又出现了新一代操作系统。

多道程序设计与分时操作系统的诞生
  在这一代操作系统中最先出现了一种技术,名叫SPOOLING技术,这个技术的出现让上图的两个小人下岗了。SPOOLING技术的出现极大的减少了I/O阻塞的时间,除此之外,该代操作系统还提出了一个非常重要的思想,即多道程序设计的思想,这个技术思想目前在我们的进程中依然存在,它的主要功能就是解决了顺序执行(串行)的问题。

image-20200629234014499

尽管这样做的确让程序效率提高了,但是我们还有一个问题。计算机中依然是批处理系统,还是要等A,B,C的叅櫊程序同时出结果才能拿到最终结果,这个时间太长了,就想上面说的如果程序员A的程序出错了卡住了程序员B和C的正常程序也取不出来。

有的人开始怀念最早的无操作系统时代的计算机了,太怀念了,我一个人的程序十分钟我就出来了,三个人的我要等三十分钟,如果有一个出错了我的等在久也出不来,我太难了…

为了解决这种问题,出现了极为牛逼的分时操作系统。

分时很形象的一个比喻就是一台电脑给A,B,C每个程序员一个键盘鼠标和显示器,大家共有一个主机各玩各的互不影响,都认为自己的程序是独享的并且马上就能看到自己程序的运行结果,你说牛不牛逼?大家都很开心,但是实际上大家还是共用的同一个CPU…(多用户多任务)。

分时操作系统到现在依然存在,并且还十分常见,比如许多人去操作同一台服务器。

这时候大家就在考虑,你丫键盘鼠标显示器啥都给我了,为啥不再给我一个主机呢?这其实还是受限于当时的成本条件,但是到了如今计算机的成本以及体积都下来后,这些都不是问题了。

个人操作系统的诞生
  现在咱们大家都是用的个人操作系统,已经挺熟练了吧,这个玩意儿每个人都在玩,但是虽然大家不共有一个CPU了,其实在系统内部依然存在着切换,它就是进程或者线程之间的切换。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值