我们在写python爬虫的过程中,对于大量数据的抓取总是希望能获得更高的速度和效率,但由于网络请求的延迟.IO的限制,单线程的运行总是不能让人满意.因此有了多线程.异步协程等技术. 下面介绍一下python中的多线程及线程池技术,并通过一个具体的爬虫案例实现具体运用. 多线程 先来分析单线程.写两个测试函数 def func1(): for i in range(500000): print("func1", i) def func2(): for i in range(500000)
1.low版线程池设计思路:运用队列queue 将线程类名放入队列中,执行一个就拿一个出来import queueimport threading class ThreadPool(object): def __init__(self, max_num=20): self.queue = queue.Queue(max_num) #创建队列,最大数为20 for i in range(max_num): self.queue.put(threading.Thread) #将类名放入队列中 def