高性能异步爬虫
目的:在爬虫中使用异步实现高性能的数据爬取操作
单线程下以串行方式模拟发送请求,程序运行时间:
不难发现,程序中的get_content是一个阻塞的方法,当且仅当,当前URL响应成功后,才能对下一个URL发起请求,因此造成了较长的运行时间。
异步爬虫的方式:
1、多线程,多进程(不建议,太耗资源与内存)
好处:可以为相关阻塞的操作单独开启线程或进程,阻塞操作就可以异步进行
弊端:无法无限制的开启多线程或多进程
2、线程池、进程池(可适当使用)
好处:可以降低系统对进程或线程创建和销毁的一个频率,很好的降低了系统的开销
弊端:池中进程或线程的数量有限
原则:并不能把所有的阻塞操作都交给线程池,线程池只处理阻塞且耗时的操作
使用基本线程池模拟发送请求,程序运行时间:
可以明显的看出,使用线程池后程序运行时间加快了不少,但是如果阻塞操作的数量大大高于池中线程对象数量的时候,线程池的意义也就不大了,那么最为推荐的异步爬虫方式是什么呢?
答:单线程 + 异步协程,详情见下文~~~
标签:异步,程序运行,爬虫,阻塞,高性能,线程,进程 来源: https://www.cnblogs.com/TzySec/p/15829249.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。