Python 实现多线程爬虫

实现多线程爬虫

  • 为什么要爬虫使用多线程?
  • 为了提高抓取数据效率
  • 有些网站对访问速度有限制, 这样网站可以可以开启多个线程, 每一个线程使用一个代理,去提取页面的一部分内容
    在这里插入图片描述

1.多线程的方法使用

在python3中,主线程主进程结束,子线程,子进程不会结束 为了能够让主线程回收子线程,可以把子线程设置为守护线程,即该线程不重要,主线程结束,子线程结束

t1 = threading.Thread(targe=func,args=(,))
t1.setDaemon(True)
t1.start() #此时线程才会启动

队列模块的使用

    from queue import Queue
    q = Queue(maxsize=100)
    item = {}
    q.put_nowait(item) #不等待直接放,队列满的时候会报错
    q.put(item) #放入数据,队列满的时候回等待
    q.get_nowait() #不等待直接取,队列空的时候会报错
    q.get() #取出数据,队列为空的时候会等待
    q.qsize() #获取队列中现存数据的个数 
    q.join() #队列中维持了一个计数,计数不为0时候让主线程阻塞等待,队列计数为0的时候才会继续往后执行
    q.task_done() 
    # put的时候计数+1,get不会-1,get需要和task_done 一起使用才会-1
    ```
    ## 3. 线程中使用队列
    **队列可用于线程间的数据通讯**
    ```l
    from queue import Queue
import threading

q = Queue()
def add_to_queue():
    for i in range(0, 100):
        print("存入队列: {}".format(i))
        q.put(i)

def get_from_queue():
    # 但是在我们获取队列元素的时候, 我们并不知道队列中放了几个元素,
    # 这个时候我们就会使用while的死循环来获取,知道取完为止
  • 14
    点赞
  • 69
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值