- 1、本文档共27页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
并发程序
23. 并发程序
顺序程序和并发程序
并发程序的意义
并发的情况和历史发展
实例,硬件,相关概念
Python并发库threading包
一些问题和实例,并发程序的一些现象
线程间通讯和queue包
计算概论(Python程序设计) 裘宗燕,2015/6/11//-1-
顺序程序和并发程序
至今为止,我们用Python写出的程序都是顺序程序:在程序运
行中只有一个活动着的执行进程
一个语句执行完后,接着执行根据控制流要求的下一语句
调用一个函数时,调用代码段的执行暂时停在函数调用点,
被调用的函数开始执行。被调用函数执行完成后,调用代码
段从调用点之后继续
顺序执行是命令式程序(以操作命令作为基本计算元素的语
言)的基本特性,Python程序也属于命令式程序
在并发程序执行中,可能同时出现多个独立的执行流
这些执行流有独立的生命周期,有自己的开始和结束,一般
称为执行进程(process)或活动(activity)
每个进程执行自己的代码,也可能需要相互合作和传递信息
计算概论(Python程序设计) 裘宗燕,2015/6/11//-2-
并发程序
需要并发程序和并发执行,主要基于下面一些理由:
更好地反映问题的逻辑结构。许多程序里,特别是各种服务
器、图形应用、计算机模拟等,需要做很多基本上相互独立
的工作。构造这种程序,最简单也最合逻辑的方式,就是用
一个独立的执行进程实现一个工作
计算机硬件通常控制着一批独立设备和部件,例如键盘、显
示器、打印机,还有各种内部组件。这些设备/部件的特性和
操作速度不同,相应控制程序最好作为独立的进程,根据需
要开始/结束或暂时中断。实时控制系统通常需要指挥控制多
台独立的外部设备,最好用独立的控制线程,还需要与处理
器上运行的其他线程交互,实现系统的整体行为
通过并发执行有可能提高计算的性能。有些程序本质上并不
需要并行执行,但如果能使用多个处理器同时计算,可能得
到很大的速度提升,或者满足实际的需要
计算概论(Python程序设计) 裘宗燕,2015/6/11//-3-
并发性
并发性的思想和技术已经开发多年
并发程序设计的最重要的基础理论工作从20 世纪60 年代开
始提出和研究,其基础理论框架在70年代已基本完成
Algol 68编程语言已经包含了与并发性有关的程序特征
但对并发性的广泛兴趣是近年的新现象,主要原因是廉价的
多处理器系统的开发和普及,以及图形、多媒体和互联网应
用等的发展(用并发线程描述特别自然)等
今天,几乎所有硬件计算机都是多处理器计算机
个人计算机(笔记本)都有2个或更多计算核心
新型手机的CPU包含4个/8个或更多核心
目前最快的天河二号计算机共包含32000颗Ivy Bridge处理器
和48000颗Xeon Phei处理器,总计312万个计算核心
计算概论(Python程序设计) 裘宗燕,2015/6/11//-4-
摩尔定律和多核CPU
通过提高主频提高计算机
性能的时代已经结束。大
约到2003 年,常规CPU的
主频增长雅然而止
文档评论(0)