Python中多进程在爬虫中的使用

本来这周准备写一个整合ip池,多进程的高效爬取所有职位详细信息的爬虫的,结果在多进程这一块儿折腾了好久,简直把我气死,虽然内容其实不多,但把自己学习的过程写下来,希望能帮到有同样困惑的朋友。

我参照的是廖雪峰老师写的一个Python教程,有兴趣大家可以百度一下,我觉得还是挺适合像我这样的新手的。

OK,话不多说,在上一篇介绍IP池的使用的文章中,最后我也提到了,通过打开网站的方式验证IP可用性的方法执行的很慢,所以必须想办法加快这个验证的速度,最容易想到的就是采用多任务的方式。

实现多任务最常见的两种方式就是多进程和多线程了。多进程,顾名思义,多个进程并发执行,可以有效提高程序的执行效率,优点是非常稳定,即使有子进程崩溃了,主进程和其他进程依然可以继续执行,但缺点是在windows下创建进程的开销比较大,而且如果进程太多,往往会影响整个系统的调度。而多线程是指一个进程内多个线程同时执行,进而提高程序执行效率,其优点可能是比多进程稍微快一点,但缺点也很明显,多线程中一个线程出现了问题就会导致整个进程崩溃,因此稳定性不是很高。

然后由于Python解释器在执行代码是有一个GIL锁(Global Interpreter Lock),它的作用是任何Python进程执行前都必须先获得GIL锁,然后没执行100条字节码释放GIL锁,让别的进程有机会执行,因此多线程在Python中只能交替执行,所以针对改善我们的爬虫程序,我们选择使用多进程的方法。

在windows系统下,Python可以通过multiprocessing库实现多进程,先从最简单地开启一个子进程开始

from multiprocessing import Process
import os

def run_proc(name):
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值