单线程太慢的话,就需要多线程了,这里给个简单的线程池模板 这个程序只是简单地打印了1-10,但是可以看出是并发的。
虽然说python的多线程很鸡肋,但是对于爬虫这种网络频繁型,还是能一定程度提高效率的。from threading import Thread
from Queue import Queue
from time import sleep
# q是任务队列
# NUM是并发线程总数
# JOBS是有多少任务
q = Queue()
NUM = 2
JOBS = 10
# 具体的处理函数,负责处理单个任务
def do_somthing_using(arguments):
print(arguments)
# 这个是工作进程,负责不断从队列取数据并处理
def working():
while True:
arguments = q.get()
do_somthing_using(arguments)
sleep(1)
q.task_done()
# fork NUM个线程等待队列
for i in range(NUM):
t = Thread(target=working)
t.setDaemon(True)
t.start()
# 把JOBS排入队列
for i in range(JOBS):
q.put(i)
# 等待所有JOBS完成
q.join()
本博客源码Github地址:
请随手给个star,谢谢!