正在加载图片...
第3期 王庆红,等:一种基于银行家算法的网络爬虫资源配置策略 ·497 表2本文算法抓取日志 Table 2 Banker's algorithm crawl log 任务 死锁 事件 等待时间 中第 开始时间 边界时间 Completed:Requestl 19:47:08 0:00:41 0:02:00 Completed:Request2 19:49:52 0:01:01 0:02:00 Completed:Request3 19:52:13 0:01.05 0:02:00 Locked:Request36 20:42:29 0:02:00 0:02:00 图2进程分配资源成功 Fig.2 Allocation successfulness for processes Locked:Request48 20:58:380:02:00 0:02:00 2.4实验结果 本文算法和ulib2爬虫算法对死锁问题进行 测试实验对比。urllib2是Python中处理HTTP协议 Completed:Request10022:08:430:00:360:02:00 的算法库,可用于监测网络爬虫资源的死锁6)。设 置超时时间为2m,当爬虫资源发生死锁后超时,记 分别采用urllib2爬虫算法和本文算法进行100 录该任务的状态为Locked,完成其他任务后重启该 次请求操作,如果在超时时间之内,爬虫资源完成请 任务:未发生死锁从而完成任务请求,则记录改任务 求操作,则日志中记录该次请求操作为Completed, 的状态为Completed,并记录等待时间。urllib.2爬虫 反之在所设置的超时时间之内未能请求成功,则日 算法抓取日志如表1所示,本文算法抓取日志如表 志中记录该次请求操作为Locked,表示发生死锁。 2所示。 本文算法和uib2爬虫算法死锁边界时间如图3 表1Urib2爬虫算法抓取日志 所示,纵坐标表示任务等待时间,横坐标表示测试实 Table 1 Urllib2 crawler algorithm crawl log 验的时间范围为19:47:08一22:08:43,等待时间等 任务 死锁 于2min表明任务请求发生死锁,小于2min表明任 事 件 等待时间 开始时间 边界时间 务请求完成。 Locked:Requestl 19:47:08 0:02:00 0:02:00 urllib2 0:02:10e 一死锁边界时间一本文算法 Locked:Request2 19:49:52 0:02:00 0:02:00 001:26 Locked:Request3 19:52:130:02:00 0:02:00 0:00:43 Completed:Request4 19.54.38 0:01:21 0:02:00 19:55:59 0:00:00 Completed:Request5 0:02:00 0:02:00 7131925313743495561677379859197103 模拟次数 Completed:Request6 19:58:42 0.01.06 0:02:00 图3死锁边界时间 Locked:Request7 19:59:480:02:00 0:02:00 Fig.3 Deadlock boundary time Completed:Request8 20:02:01 0:00:41 0:02:00 Completed:Request9 20:02:42 0.00.27 0:02:00 Urllib2爬虫算法等待时间合计为2h9min7s, Completed:Request10 20:03:09 0:01:12 0:02:00 死锁次数为30次,死锁率为30%:银行家算法等待时 Completed:Request11 20:04:20 0:01:58 0:02:00 间合计为1h38min28s,死锁次数为2次,死锁率为 Locked:Request12 20:06:18 0:02:00 0:02:00 2%,算法对比实验结果如表3所示。实验结果表明, Completed:Request13 20:09:00 0:00:36 0:02:00 本文算法明显降低了死锁率,提高了系统运行效率。 Completed:Request14 20:09:36 0:00:36 0:02:00 传统资源配置算法死锁率高、效率低下。 Locked:Request15 20:10:120:02:00 0:02:00 表3实验结果对比 Locked:Request16 20:12:260:02:00 0:02:00 Table 3 Comparison of the experimental results Locked:Request17 20:15:170:02:00 0:02:00 算法 等待时间合计死锁次数死锁率/% urib2算法 2:09:07 30 30 Completed:Request100 22:08:43 0:00:36 0:02:00 银行家算法 1:38:28 20图 2 进程分配资源成功 Fig. 2 Allocation successfulness for processes 2.4 实验结果 本文算法和 urllib2 爬虫算法对死锁问题进行 测试实验对比。 urllib2 是 Python 中处理 HTTP 协议 的算法库,可用于监测网络爬虫资源的死锁[16] 。 设 置超时时间为 2 m,当爬虫资源发生死锁后超时,记 录该任务的状态为 Locked,完成其他任务后重启该 任务;未发生死锁从而完成任务请求,则记录改任务 的状态为 Completed,并记录等待时间。 urllib2 爬虫 算法抓取日志如表 1 所示,本文算法抓取日志如表 2 所示。 表 1 Urllib2 爬虫算法抓取日志 Table 1 Urllib2 crawler algorithm crawl log 事 件 任务 开始时间 等待时间 死锁 边界时间 Locked:Request1 19:47:08 0:02:00 0:02:00 Locked:Request2 19:49:52 0:02:00 0:02:00 Locked:Request3 19:52:13 0:02:00 0:02:00 Completed:Request4 19:54:38 0:01:21 0:02:00 Completed:Request5 19:55:59 0:02:00 0:02:00 Completed:Request6 19:58:42 0:01:06 0:02:00 Locked:Request7 19:59:48 0:02:00 0:02:00 Completed:Request8 20:02:01 0:00:41 0:02:00 Completed:Request9 20:02:42 0:00:27 0:02:00 Completed:Request10 20:03:09 0:01:12 0:02:00 Completed:Request11 20:04:20 0:01:58 0:02:00 Locked:Request12 20:06:18 0:02:00 0:02:00 Completed:Request13 20:09:00 0:00:36 0:02:00 Completed:Request14 20:09:36 0:00:36 0:02:00 Locked:Request15 20:10:12 0:02:00 0:02:00 Locked:Request16 20:12:26 0:02:00 0:02:00 Locked:Request17 20:15:17 0:02:00 0:02:00 ︙ ︙ ︙ ︙ Completed:Request100 22:08:43 0:00:36 0:02:00 表 2 本文算法抓取日志 Table 2 Banker's algorithm crawl log 事 件 任务 开始时间 等待时间 死锁 边界时间 Completed:Request1 19:47:08 0:00:41 0:02:00 Completed:Request2 19:49:52 0:01:01 0:02:00 Completed:Request3 19:52:13 0:01:05 0:02:00 ︙ ︙ ︙ ︙ Locked:Request36 20:42:29 0:02:00 0:02:00 ︙ ︙ ︙ ︙ Locked:Request48 20:58:38 0:02:00 0:02:00 ︙ ︙ ︙ ︙ Completed:Request100 22:08:43 0:00:36 0:02:00 分别采用 urllib2 爬虫算法和本文算法进行 100 次请求操作,如果在超时时间之内,爬虫资源完成请 求操作,则日志中记录该次请求操作为 Completed, 反之在所设置的超时时间之内未能请求成功,则日 志中记录该次请求操作为 Locked,表示发生死锁。 本文算法和 urllib2 爬虫算法死锁边界时间如图 3 所示,纵坐标表示任务等待时间,横坐标表示测试实 验的时间范围为 19:47:08—22:08:43,等待时间等 于 2 min 表明任务请求发生死锁,小于 2 min 表明任 务请求完成。 图 3 死锁边界时间 Fig. 3 Deadlock boundary time Urllib2 爬虫算法等待时间合计为 2 h 9 min 7 s, 死锁次数为 30 次,死锁率为 30%;银行家算法等待时 间合计为 1 h 38 min 28 s,死锁次数为 2 次,死锁率为 2%,算法对比实验结果如表 3 所示。 实验结果表明, 本文算法明显降低了死锁率,提高了系统运行效率。 传统资源配置算法死锁率高、效率低下。 表 3 实验结果对比 Table 3 Comparison of the experimental results 算 法 等待时间合计 死锁次数 死锁率/ % urllib2 算法 2:09:07 30 30 银行家算法 1:38:28 20 2 第 3 期 王庆红,等:一种基于银行家算法的网络爬虫资源配置策略 ·497·
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有