本篇将要介绍python的并行化,及简单的应用。
主要介绍map函数的使用,一手包办了序列操作、参数传递和结果保存等一系列的操作。
首先是引入库:
from multiprocessing.dummy import Pool
pool=Pool(4)
results=pool.map(爬取函数,网址列表)
本文将一个简单的例子来看一下如何使用map函数以及这种方法与普通方法的对比情况。
import time
from multiprocessing.dummy import Pool
def getsource(url):
html=requests.get(url)
urls=[]
for i in range(1,21):
newpage=‘http://tieba.baidu.com/p/3522395718?pn=‘+str(i)
urls.append(newpage)
timex=time.time() #测试一
for i in urls:
getsource(i)
print (time.time()-timex)
#这里是输出的结果:
#10.2820000648
time1=time.time() #测试二
pool=Pool(4)
results=pool.map(getsource,urls)
pool.close()
pool.join()
print (time.time()-time1)
#这里是输出结果:
#3.23600006104
对比以上两种方法,可以很明显地看出 测试二比测试一要快很多。
对程序做一下解释:
测试一种
for i in urls:
getsource(i) #使程序一直遍历urls列表中的网址,然后循环调用getsource函数
测试二中:
pool=Pool(4) #声明了4个线程数量,这里的个数根据你电脑的CPU个数来定。
results=pool.map(getsource,urls) #这里使用map函数,并且函数的参数为自定义函数名称,以及函数中的参数(这里为一个列表)
pool.close() #关闭pool对象
pool.join() #join函数的主要作用是等待所有的线程(4个)都执行结束后
print (time.time()-time1) #输出所用时间差
版权声明:本文为博主原创文章,未经博主允许不得转载。
原文地址:http://blog.csdn.net/winterto1990/article/details/47976105