一个进程里只有一个线程,咱们称之为单线程爬虫。单线程爬虫每次只访问一个页面,不能充分利用电脑的网络带宽。一个页面最多也就几百KB,因此爬虫在爬取一个页面的时候,多出来的网速就浪费掉了。网络
而若是咱们可让爬虫同时访问10个页面,就至关于咱们的爬取速度提升了10倍。这个时候就须要使用多线程技术了。多线程
这里有一点要强调一下,Python这门语言在设计上的时候,有一个GIL锁。这个东西让Python的多线程都是伪多线程。本质上仍是只有一个线程,可是这个线程每一个事情只作几毫秒,作完几秒救保存线程,换作其余事情几毫秒,换一轮下来继续回到第一件事上,恢复线程再作几秒,继续换……性能
在《X战警-天启》中,万磁王他儿子从教授的学院里面救出了很是多的人。因为他速度很是的快,因此虽然它是一我的一我的救的,可是对其余人来讲,就感受像是所有同时移动到了学校外面去了同样。spa
这样微观上的单线程,在宏观上看起来就像是同时在作几件事。这种机制在IO密集型的操做上面影响也不大,可是在CPU计算密集型的操做上面,因为CPU原本十分繁忙,这就会对性能产生很是大的影响。因此涉及到计算密集型的程序,就须要使用多进程,Python的多进程不受GIL锁的影响。线程
爬虫属于IO密集型的程序,因此使用多线程不会不会对性能形成太大的影响。设计
转载:极客学院某位老师的话(修改了一点点)。进程