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

我的爬虫学习

  • Python爬虫多线程多进程
    • 多线程
    • 多进程

Python爬虫多线程多进程

多线程

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

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

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

多进程

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

你可能感兴趣的:(小白学爬虫)