并发与并行编程:概念、瓶颈与架构解析
在编程领域,并发和并行是两个常被混淆但又截然不同的概念。正确理解它们,对于设计高性能软件至关重要。本文将深入探讨并发和并行的概念、常见的性能瓶颈,以及不同的计算机系统架构如何影响程序的运行。
理解并发
并发本质上是指同时处理多个任务,但并非严格意义上的并行。它能提升应用程序的感知性能和运行速度。可以想象一个人同时处理多个任务,快速在这些任务之间切换。比如,一个人在编写程序的同时处理支持请求,他会主要专注于编程,当有支持问题时迅速切换去解决,解决后再快速回到编程任务。
在计算领域,编写程序时通常需要注意两种性能瓶颈:
- I/O 瓶颈 :计算机花费在等待各种输入输出上的时间多于处理信息的时间。例如,在使用标准网页浏览器时,等待网络请求完成(如样式表、脚本或 HTML 页面加载)的时间远长于在屏幕上渲染的时间。如果数据请求速率慢于数据消耗速率,就会出现 I/O 瓶颈。解决这类问题的主要方法是升级硬件以提高底层 I/O 速度,或者改进处理 I/O 请求的方式。以网络爬虫为例,其主要目的是遍历网页并索引页面,以便谷歌在运行搜索排名算法时参考。以下是一个简单的脚本,用于请求一个页面并记录请求时间:
import urllib.request
import time
t1 = time.time()
req = urllib.request.urlopen("http://www.example.com")
pageHtml = req.read()
t2 = time.time()
print("Total Time To
超级会员免费看
订阅专栏 解锁全文
173万+

被折叠的 条评论
为什么被折叠?



