返回介绍

4.4 性能

发布于 2024-02-05 23:37:18 字数 1724 浏览 0 评论 0 收藏 0

为了进一步了解增加线程和进程的数量会如何影响下载时间,我们对爬取1000个网页时的结果进行了对比,如表4.1所示。

表4.1

脚本

线程数

进程数

时间

相对串行的时间比

串行

1

1

28分59.966秒

1

多线程

5

1

7分11.634秒

4.03

多线程

10

1

3分50.455秒

7.55

多线程

20

1

2分45.412秒

10.52

多进程

5

2

4分2.624秒

7.17

多进程

10

2

2分1.445秒

14.33

多进程

20

2

1分47.663秒

16.16

表格的最后一列给出的是相对于串行下载的时间比。可以看出,性能的增长与线程和进程的数量并不是成线性比例的,而是趋于对数。比如,使用1个进程和5个线程时,性能大约为串行时的4倍,而使用20个线程时性能只达到了串行下载时的10倍。虽然新增的线程能够加快下载速度,但是起到的效果相比于之前添加的线程会越来越小。其实这是可以预见到的现象,因为此时进程需要在更多线程之间进行切换,专门用于每一个线程的时间就会变少。此外,下载的带宽是有限的,最终添加新线程将无法带来更快的下载速度。因此,要想获得更好的性能,就需要在多台服务器上分布式部署爬虫,并且所有服务器都要指向同一个MongoDB队列实例。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文