这里再接着上一节的内容,用进程和进程池来爬取 多核电脑在这里就还有更大优势了,我的电脑就双核 ,所以并不明显
简单进程
if __name__ == '__main__':
url = 'http://www.xiladaili.com/gaoni/{}/'
for i in range(1,1000):
p = multiprocessing.Process(target=cr, args=(url.format(i),))
p.start()
这里只是修改了主函数的代码 记得导入相关库,看自己的核数使用的方法如下
multiprocessing.cpu_count()
建立进程池
if __name__ == '__main__':
url = 'http://www.xiladaili.com/gaoni/{}/'
pool = multiprocessing.Pool(processes=3)
urls=[]
for i in range(1,1000):
urls.append(url.format(i))
pool.map(cr, urls)
pool.close()
进程池的使用就是,建立池子,然后map分配任务,processes参数就是限制的cpu核数,但是超过了自己的核数也是可以的。 我 2核,设置3核照样可以运行,感觉核少的电脑还不如上一个的线程运行的快
|