关于 python 爬虫速率的疑问

关于 python 爬虫速率的疑问,第1张

关于 python 爬虫速率的疑问,第2张

优化网络:

1.我理解 爬虫主要的问题在于网络阻塞,所以使用多线程弥补 HTTP 异步等待。 那么使用了gevent解决网络问阻塞题,就不需要使用多线程吗?

优化 CPU :

2.python 多线程运行时,使用的是单核心,还是多核心?在多核心机器上运行如果是单核心,能否同时使用多线程多进程

3.在 4 核心 8 线程的电脑上,开启单个进程 32 线程 python 运行,这些线程是怎么分配的?

4.当网络阻塞不是瓶颈,如何才能最大化使用单台电脑 CPU ?应该使用多线程还是多进程增大爬取速率?

5.使用消息队列分布式爬虫,等待的消息过多会不会存在内存或 CPU 问题?

6.使用消息队列是如何增大爬取速率的?

----------------------- 以下是精选回复-----------------------

答:首先,从来没有任何框架真正解决了网络阻塞问题, gevent 和 twisted 之类的异步是变相的网络多线程,理论上你可以一直异步一直等待,但你的连接数会达到无限大,在这之前连接就被服务器干掉了。
在这个前提下,异步也只能在一个限定的连接数之下充分发挥你最大的带宽而已,网络依然是阻塞的。
答:感觉你考虑太多了,爬虫的限制一般都来自目标网站
答:花大把时间搞定之后, 一个 captcha 傻眼了
答:你可以试试 pypy ,我觉得足够了= =
答:1. 不需要
2. 单核,启动多个进程
3. 随机使用一个核
4. 多进程
5. 会
6. 使用消息队列不会增大爬取速率
答:真的不担心把目标网站爬挂吗?
答:真正的瓶颈来源于目标网站的反爬虫策略
答:瓶颈在 IO ,也就是网络上,包括目标网站的响应速度、网络状况、本地网络等。这个响应速度实际情况下至少也是 10ms 以上的,而你 CPU 处理这个页面速度怎么也在 0.01ms 以下吧(除非你里面又放了什么 IO 操作);所以你看这个速度差距在 1000 倍以上;你唯一要考虑的是目标网站把你当 DOS 攻击把你屏蔽了(有各种屏蔽方式)。如果对方真允许你这么快,你也的确需要这么快,那么多开几个进程吧;注意不要重复爬就是了。
分布式爬虫什么的不是爬单个简单目标,而是爬很多目标的情况下使用的,这个是集群情况下使用,单机就不用了吧。

另外楼主的问题其实不是关于爬虫的,而是计算机 /软件基础知识不清楚,建议补补这些吧。
答:python 的多线程本身就不稳定,我一般是把程序写成单线程,但启动多个进程来跑,非常稳定
答:1L 已经回答了

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » 关于 python 爬虫速率的疑问

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情