Skip to content

Commit c8b6caf

Browse files
committed
Merge branch 'patch-chapter3' of /media/lujun9972/UUI/Parallel-Programming-with-Python into patch-chapter3
2 parents 94d6caf + f7101b6 commit c8b6caf

File tree

4 files changed

+14
-14
lines changed

4 files changed

+14
-14
lines changed

第三章/从多个输入中得到斐波那契最大的值.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,16 +7,16 @@
77
实际上,按照从0到10计算斐波那契的值,结果将会是0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 和55.
88

99
用迭代法计算斐波那契最高的值的Python代码如下:
10-
10+
```python
1111
def fibonacci(input):
1212
a, b = 0, 1
1313
for item in range(input):
1414
a, b = b, a + b
1515
return a
16+
```
17+
斐波那契函数为一个特定的输入的数据计算一个最大的斐波那契值。让我们想象一个场景,在这个场景中,需要计算斐波那契的值,而本网站将会从一个用户那里接收到几个输入。假设用户提供一个数组的值作为输入,因此使这些计算按顺序将会很有趣。但是假使是100万个用户同时发出请求那么将会怎么样?在这种情况下,一些用户不得不等待很长一段时间才能得到他们的答案。
1618

17-
斐波那契函数为一个特定的输入的数据计算一个最高的斐波那契值。让我们想象一个场景,在这个场景中,需要计算斐波那契的值,而本网站将会从一个用户那里接收到几个输入。假设用户提供一个数组的值作为输入,因此使这些计算按顺序将会很有趣。但是假使是100万个用户同时发出请求那么将会怎么样?在这种情况下,一些用户不得不等待很长一段时间直到他们被回答。
18-
19-
让我们只考虑先前文中的Python实现的斐波那契函数代码。我们怎么在有一个数组数据输入的情况下使用并行性来实现它?在前一章显示的技术中,在这种情况下我们应该使用其中的一个-数据分解。我们可以将数组分为几个单元,每个单元关联一个任务然后被一个worker执行。下图描述了一个建议的解决方案:
19+
让我们只考虑先前文中的Python实现的斐波那契函数代码。我们怎么在有一个数组数据输入的情况下使用并行性来实现它?在前一章已经展示过多种实现的方式,这里我们使用其中一种方式-数据分解。我们可以将数组分为几个单元,每个单元关联一个任务然后被一个worker执行。下图描述了一个建议的解决方案:
2020

2121
![](https://github.com/Voidly/Img/blob/master/Parallel%20Programming%20with%20Python/Chapter%203/Parallel%20Fibonacci%20for%20multiples%20inputs.png?raw=true)
2222

第三章/总结.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
##总结
22

3-
在这一章节,我们学习了关于常见问题以及涉及并行性的可能的解决方案。提出的问题展示了使用不同的Python库来实施解决方案
3+
在这一章节,我们学习了并行中出现的常见问题以及可能的解决方案。下面将会题展示任何使用不同的Python库来解决上面展示的问题
44

5-
在下一章节,当使用线程模块,我们专注于的解决方案将涉及到线程,在用到多进程时,解决方案也会涉及到使用进程,以此类推。
5+
在下一章节,当使用threading模块,我们专注于的线程的解决方案,在用到mutliprocess模块时,解决方案也会涉及到使用多进程,以此类推。

第三章/爬取网页.md

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,17 @@
11
##爬取网页
22

3-
贯穿本书的另一个正在研究的问题是是实现一个并行的网络爬虫。一个网络爬虫由一个浏览网页并从页面获取信息的电脑程序组成。被分析的场景是一个问题,在这个问题中,一个连续的网络爬虫是由一个可变数量的统一资源定位器(URLs),并且它要检索每个URL所提供的所有链接。想象到输入的URLs的数量相当的大,我们可以在以下方法中寻找并行性的解决方案:
3+
贯穿本书的另一个正在研究的问题是是实现一个并行的网络爬虫。一个网络爬虫由一个个浏览网页并从页面获取信息的电脑程序组成。被分析的场景是一个问题,在这个问题中,一个顺序执行的网络爬虫会被提供一组可变数量的统一资源定位器(URLs)为参数,它需要检索每个URL所提供的所有链接。假设输入的URLs的数量相当的大,我们可以在以下方法中寻找并行性的解决方案:
44

5-
1. 在数据结构中,把所有的URLs分成组
6-
2. 把数据URLs和任务关联起来,这样将会通过从每个URL获得信息来爬取网页
7-
3. 以并行的workers来执行任务
5+
1. 将所有的URLs分成组组合到一个数据结构中
6+
2. 把这些URLs分配給多个任务,这样写任务会爬取每个URL中的包含信息
7+
3. 将这些任务分派给多个并行的workers来执行
88
4. 由于前一阶段的结果必须传给下一个阶段,这将会改进未加工的存储的数据,因此保存它们关联它们到原始的URLs。
99

10-
正如我们可以在有限的步骤中观察到为了一个提出的解决方案,可以与以下两个方法结合:
10+
正如我们在上面编号的步骤中观察到的为了一个提出的解决方案,可以与以下两个方法结合:
1111

1212
* 数据分解:这发生在我们划分和关联URLs到任务上。
1313
* 用管道进行任务分解:这包含三个阶段的管道,这发生在我们链接接收、存储以及组织爬取的结果的任务。
1414

1515
下图显示了解决方案:
1616

17-
![](https://github.com/Voidly/Img/blob/master/Parallel%20Programming%20with%20Python/Chapter%203/Parallel%20Web%20crawler.png?raw=true)
17+
![](https://github.com/Voidly/Img/blob/master/Parallel%20Programming%20with%20Python/Chapter%203/Parallel%20Web%20crawler.png?raw=true)
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
##识别一个可并行的问题
22

3-
前一章提出了一些我们可能想到的在并行方面的一些问题的不同的方式。现在我们将分析一些具体的问题,这些将在具体实现时自始至终会对我们有指导的作用。
3+
前一章我们从不同角度探讨了并行方面的一些问题。现在我们将分析一些具体的问题,这些将在具体实现时自始至终会对我们有指导的作用。
44

55
这个章节包含以下的议题:
66

77
* 获得有多个输入的斐波那契最高的值
8-
* 网页爬虫
8+
* 网页爬虫

0 commit comments

Comments
 (0)