最近拜读瑞安·米切尔的书关于并行抓取问题有很通俗的介绍:
“网页抓去的速度很快,起码通常比雇佣几十个实习生手动网上复制数据要快很多。当然随着技术的不断进步和享乐适应,人们还是在某个时刻觉得‘不够快’,于是把目光转向分布式计算。
和其他领域不同的是,网页抓取不能单纯依靠‘给问题增加更多进程’来提升速度,虽然运行一个process很快,但是两个进程未必能让速度提升一倍,而当运行三个乃更多时,可能你的所有请求都会被远程服务器封杀,因为他认为你是在恶意攻击。”
然而,某些场景里使用网页并行抓取或者并行线程(thread)/进程仍然有些好处:
1.从多个数据源(多个远程服务器),而不只是在一个数据源收集数据。
2.在已经收集到的数据上执行更加复杂/执行时间更长的操作(例如图像分析或者OCR处理)。
3.从大型web服务器收集数据,如果你已经付费,或者创建多个连接是使用协议允许的行为。
一.pythom3.x 使用的是_thread,而thread模块已经废弃
1.1下面用_thread实现一个小例子
1 import time
2 import _thread
3 def print. time(threadName, delay, iterations):
4
5 start = int(time . time())
6
7 for i in range(0 ,iterations):
8
9 time .sleep(delay)
10
11 seconds_ elapsed = str(int(time.time()) - start)
12
13 print (\"[] []\". format(seconds_ elapsed, threadName))
14
15 try:
16 _thread.start_new_thread(print_time, (\'Fizz\', 3, 33))
17 _thread.start_new_thread(print_time, (\'Buzz\',5,20))
18 _thread.start_new_thread(print_time,(\'Counter\',1,100))
19 except:
20
21 print (\'Error:unable to start_thread\')
22
23 while 1:
24
25 pass
来源:https://www.cnblogs.com/cheflone/p/13893014.html
图文来源于网络,如有侵权请联系删除。