Python 爬虫进阶之多进程的用法

前言

在python爬虫中,一般用的是多进程进行爬取,因为多线程并不能提高CPU的使用率,而且多线程其实是交替执行,多进程才是并发执行。

多进程,顾名思义,多个进程并发执行,可以有效提高程序的执行效率,优点是非常稳定,即使有子进程崩溃了,主进程和其他进程依然可以继续执行,缺点是在windows下创建进程的开销比较大,而且如果进程太多,往往会影响整个系统的调度。
python

一、多进程的优势

为什么选用多进程而不选用多线程,这是考虑到了诸多的实际情况最终做出的选择。

  1. 在python环境下,多进程稍稍比多线程好实现好理解一点。
  2. 因为爬虫大多数都是运行在linux内核的服务器上面,而在linux操作系统下,多进程要比多线程更加合适,因为调度开销和多线程差不多,但是进程性能更好。如果在windows系统下跑爬虫的话,建议使用框架或者使用多线程。
  3. 爬虫毕竟不是服务器交互,没有人会开1k的线程去跑这个,所以一般情况下我们把自己爬虫的效率提升几倍即可。

二、多进程与单进程

先上一个多进程和单进程测试的结果:
python
我们可以发现,多进程执行比单进程速度快了一百多倍,所以说,并行大法好啊

我这里用的是Pool池的方法来使用多进程的

当使用Process类管理非常多(几十上百个)的进程时,就会显得比较繁琐,这是就可以使用Pool(进程池)来对进程进行统一管理。当池中进程已满时,有新进程请求执行时,就会被阻塞,直到池中有进程执行结束,新的进程请求才会被放入池中并执行。

三、实例

import multiprocessing
from bs4 import BeautifulSoup
import requests

def pageUrls(url):
    web_data = requests.get(url)
    soup = BeautifulSoup(web_data.text, 'lxml')
    sum = int(soup.select
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值