Python爬虫是用多线程还是多进程

Python爬虫多线程多进程

多线程

自己的爬虫一直在用多进程,以前一直没了解过多线程,只知道多线程适合IO密集型场景,感觉自己的也不太需要,所以就一直用Multiprocessing,昨天经理让我们写多线程的爬虫,我就去学习了一下,了解到了Python有一个终极黑科技:GIL锁(global interpreter lock)

任何Python线程执行前,必须先获得GIL锁,然后,每执行100条字节码,解释器就自动释放GIL锁,让别的线程有机会执行。这个GIL全局锁实际上把所有线程的执行代码都给上了锁

就是比如你想计算 从0依次+1 到一百万要多少时间,对比单线程和两线程,期望得到比单线程快一倍的速度,使用了之后发现不仅不快而且更慢了,因为GIL锁的存在,两(多)个线程同时只能运行一个,所以就是线程1运行了一会,然后线程2运行,且只能在一个核心上运行,怎么样,够不够黑科技,简直黑死了。。。

多进程

但是多进程就没有这方面的顾虑,一个进程使用一个解释器,一个解释器一把锁,所以多个线程就是多把不互相干预的锁,运行起来就能得到期望的速度,当然你有几个核心就最多在Pool里放进个进程,工作地方的电脑只有两个核心哈哈。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值