文章详情页
python 爬虫 解析效率如何提升?
浏览:295日期:2022-06-29 17:26:48
问题描述
现在采用的是在windows 环境下 采用多线程的方式进行爬取,使用beautifulsoup+lxml进行解析.
N个爬取线程->解析队列->1个解析线程->存储队列->1个存储线程
整个执行程序的效率卡在计算密集的解析线程中,如果只是增加解析线程数量的话,反而增加线程切换开销速度变慢。
请问下 有什么办法可以较为明显的提升解析效率?
根据两位大腿的说明 准备采用异步爬取->解析队列->N个解析进程->存储队列->存储线程
准备开工
问题解答
回答1:其实我觉得, 你在前面N个爬取线程 可以换成协程/线程池实现, 因为你在频繁创建线程本省一种性能耗费, 用线程池虽然可以减少这部分的损耗, 但是上下文切换还是无法避免, 所以协程这方面, 应该是比较合适的.1个解析线程 换成 进程池,多开几个进程去计算密集处理, 其余应该可以不用改, 如果还想再搞, 将核心部分用c/c++ 重写咯, 希望可以帮到你
回答2:我的做法是多进程。多进程的好处是当单机性能不够的时候,可以随时切换为分布式爬虫。
回答3:可以网上找下tornade异步爬虫吧,我正在用这个
相关文章:
1. javascript - 关于jsp中嵌入js代码的问题2. javascript - 百度坐标,返回目标附近有哪些坐标3. javascript - 一个JS多元运算符的问题4. javascript - 关于fullpage.js的横向滚动控制5. javascript - 有什么兼容性比较好的办法来判断浏览器窗口的类型?6. javascript - 有一个异步获取数据的函数A,其他依赖这个A得到的数据的函数是否都必须是异步的?7. javascript - 对不同类别的id的物品中的某个字段做权重覆盖,除了直接使用if else语句还能有更优雅便于维护的方式吗?8. clone - git sourceTree克隆仓库时,都不停弹出Password Required弹窗,即时输入正确的git账号密码还是弹出9. javascript - 判断用户网络环境10. angular.js - angurlarJS的安卓的微信端中用加载ngCookies会出错的问题
排行榜

网公网安备