本文介绍一下多线程。不过值得注意的是,不能滥用多线程,多线程爬虫请求内容速度过快,可能会导致服务器过载,或者是IP被封禁。为了避免这一问题,我们在使用多线程爬虫的时候需要设置一个delay时间,用于请求同一域名时的最小时间间隔。
线程和进程如何工作
当程序在运行时,就会创建包含代码和状态的进程。这些进程通过一个或者多个CPU来执行。不过同一时刻每个CPU只会执行一个进程,然后在不同进程之间快速切换,这样就感觉多个程序同时运行。同理,在一个进程中,程序的执行也是在不同线程间进行切换的,每个线程执行程序的不同部分。这就意味着一个线程在等待执行时,进程会切换到其他的线程执行,这样可以避免浪费CPU时间。
Threading线程模块
在Python标准库中,使用threading模块来支持多线程。Threading模块对thread进行了封装,绝大数情况,只需要使用threading这个模块。使用起来也非常简单:
t1=threading.Thread(target=run,args=("t1",)) 创建一个线程实例
# target是要执行的函数名(不是函数),args是函数对应的参数,以元组的形式存在
t1.start() 启动这个线程实例。
普通创建方式
线程的创建很简单&#