python多线程和多进程的区别_多线程、多进程爬虫

一、前言

1、并发和并行

  • 并发:在一个时间段内发生若干事件的情况(单个CPU)
  • 并行:在同一时间发生若干事件的情况(多个CPU)

2、同步和异步

  • 同步:指并发和并行的各个任务之间不是独自运行的,任务之间有一定的交替顺序,可能在运行完一个任务得到结果之后,另一个任务才会开始运行
  • 异步:并发或并行的各个任务可以独立运行,一个任务的运行不受另一个任务的影响

3、多线程与多进程爬虫

多线程、多进程、多协程网络爬虫在进行网页IO的时候都是采用异步方式“同时”获取多个网页,从而加快网页的爬取速度

  • 多线程:

多线程爬虫是以并发的方式执行,多个线程并不是真正的同时执行,而是通过进程的快速切换网络爬虫速度的。 因为python本身设计对多线程的执行有所限制,GIL(Global Interpreter Lock,全局解释器锁),在Python中,一个线程的执行过程包括获取GIL、执行代码知道挂起和释放GIL。由于GIL锁的存在,Python里一个进程永远只能同时执行一个线程。 以网络爬虫来说,网络爬虫是IO密集型,多线程能有效提升效率,因为单线程下有IO操作会进行IO等待,所以会造成不必要的时间浪费,而开启多线程能在线程A等待时切换到线程B,可以不浪费CPU资源,从而提升程序执行的效率。

  • 多进程:

多进程爬虫可以用于多CPU并行执行,速度往往比多线程爬虫快,可以切实提高网络爬虫的爬取速度。

二、单线程与多线程比较

任务:爬取alexa.txt文件中1000个网页的全部内容

单线程是根据循环,依次将各个网页的内容爬取,为串联操作。而爬虫又是IO密集型操作,因此会占用大量的CPU时间,浪费CPU资源。

单线程爬虫爬取1000个网页

import 

而多线程爬虫会使多个线程并发操作,当一个线程等待IO而空闲CPU资源时,就切换到另一个线程继续执行。这样大大提高了CPU资源的利用率,减少了爬虫的时间。

多线虫爬虫爬取1000个网页

import 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值