[发明专利]控制网络爬虫的任务分配方法和装置有效
申请号: | 201610243866.4 | 申请日: | 2016-04-18 |
公开(公告)号: | CN107305548B | 公开(公告)日: | 2020-02-28 |
发明(设计)人: | 杨杰 | 申请(专利权)人: | 北京国双科技有限公司 |
主分类号: | G06F16/951 | 分类号: | G06F16/951 |
代理公司: | 北京康信知识产权代理有限责任公司 11240 | 代理人: | 韩建伟;张永明 |
地址: | 100083 北京市海淀区*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 控制 网络 爬虫 任务 分配 方法 装置 | ||
1.一种控制网络爬虫的任务分配方法,其特征在于,所述网络爬虫采用多线程执行任务,所述多线程预先存放于线程池内,所述方法包括:
通过信号量判断所述多线程中的任务线程的数量是否达到任务最大并行数,其中,所述信号量的初始值为所述任务最大并行数;
在通过所述信号量判断出所述多线程中的任务线程的数量达到所述任务最大并行数时,阻止所述线程池内的线程从URL队列中获取任务;以及
在通过所述信号量判断出所述多线程中的任务线程的数量未达到所述任务最大并行数时,控制所述线程池内的线程从所述URL队列中获取任务;
其中,在通过所述信号量判断出所述多线程中的任务线程的数量未达到所述任务最大并行数时,控制所述线程池内的线程从URL队列中获取任务之后,所述方法还包括:将所述信号量的值减1,
在所述任务线程的任务执行完成或取消时,所述方法还包括:将所述信号量的值加1。
2.根据权利要求1所述的方法,其特征在于,通过信号量判断所述多线程中的任务线程的数量是否达到任务最大并行数包括:
判断所述信号量的值是否为0;
在判断出所述信号量的值为0时,则确定所述多线程中的任务线程的数量达到所述任务最大并行数;以及
在判断出所述信号量的值不为0时,则确定所述多线程中的任务线程的数量未达到所述任务最大并行数。
3.根据权利要求1或2所述的方法,其特征在于,在通过所述信号量判断出所述多线程中的任务线程的数量达到所述任务最大并行数时,阻止所述线程池内的线程从URL队列中获取任务之后,所述方法还包括:控制所述线程池内的线程进入等待状态。
4.根据权利要求1或2所述的方法,其特征在于,在通过信号量判断所述多线程中的任务线程的数量是否达到任务最大并行数之前,所述方法还包括:
在所述网络爬虫启动时,从数据库中读取所述任务最大并行数,其中,所述数据库中预先存储有所述任务最大并行数;以及
将所述任务最大并行数赋值给所述信号量,并作为所述信号量的初始值。
5.一种控制网络爬虫的任务分配装置,其特征在于,所述网络爬虫采用多线程执行任务,所述多线程预先存放于线程池内,所述装置包括:
判断单元,用于通过信号量判断所述多线程中的任务线程的数量是否达到任务最大并行数,其中,所述信号量的初始值为所述任务最大并行数,所述任务线程为经过所述信号量的线程;
阻止单元,用于在通过所述信号量判断出所述多线程中的任务线程的数量达到所述任务最大并行数时,阻止所述线程池内的线程从URL队列中获取任务;以及
第一控制单元,用于在通过所述信号量判断出所述多线程中的任务线程的数量未达到所述任务最大并行数时,控制所述线程池内的线程从所述URL队列中获取任务;
其中,所述装置还包括:减单元,用于在通过所述信号量判断出所述多线程中的任务线程的数量未达到所述任务最大并行数时,控制所述线程池内的线程从URL队列中获取任务之后,将所述信号量的值减1,加单元,用于在所述任务线程的任务执行完成或取消时,将所述信号量的值加1。
6.根据权利要求5所述的装置,其特征在于,所述判断单元包括:
判断模块,用于判断所述信号量的值是否为0;
第一确定模块,用于在判断出所述信号量的值为0时,则确定所述多线程中的任务线程的数量达到所述任务最大并行数;以及
第二确定模块,用于在判断出所述信号量的值不为0时,则确定所述多线程中的任务线程的数量未达到所述任务最大并行数。
7.根据权利要求5或6所述的装置,其特征在于,所述装置还包括:第二控制单元,用于在通过所述信号量判断出所述多线程中的任务线程的数量达到所述任务最大并行数时,阻止所述线程池内的线程从URL队列中获取任务之后,控制所述线程池内的线程进入等待状态。
8.根据权利要求5或6所述的装置,其特征在于,所述装置还包括:
读取单元,用于在所述网络爬虫启动时,从数据库中读取所述任务最大并行数,其中,所述数据库中预先存储有所述任务最大并行数;以及
赋值单元,用于将所述任务最大并行数赋值给所述信号量,并作为所述信号量的初始值。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京国双科技有限公司,未经北京国双科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201610243866.4/1.html,转载请声明来源钻瓜专利网。