python高级之简单爬虫实现

[复制链接]
发表于 2025-12-24 02:25:54 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
一、前言

场景1:一个网络爬虫,序次爬取一个网页花了一个小时,采取并发下载就镌汰到了20分钟。
场景2:一个应用软件优化前每次打开网页必要3秒,采取异步并发提升到了200毫秒。
假设一个工程的工作量为100,不采取并发编程就相称于由一个人去完成这个工作量为100的全部工作内容,大概必要1个小时来做完。
但是照旧这工作量为100的工程,我们采取并发编程就相称于是由2个人大概3个人去共同完成这份100工作量的工作,大概这份工作只必要半个小时就能做完。
总之引入并发就相称于提升步调举行速率。
二、步调提速的方法

1、单线程串行

正常情况我们写出的步调是单线程实行的,好比一个线程实行开始后开始CPU【运算器和控制器】实行,之后举行IO操纵,在IO完成之后CPU再次举行运算,也就是说在这个线程的实行过程中CPU与IO是不能同时工作的。
缺点:在团体时间上有些浪费,在CPU工作时,IO并不工作,假如他们能共同工作就好了。
2、多线程并发 【多线程】

此时情况为在CPU工作时,IO同样能举行。CPU举行工作,当运行到IO操纵后,此时就会有一个新的task去实行IO操纵,CPU也可以继续实行自己的运算,当IO完成后也会关照CPU举行下一步的处置处罚。
注意:CPU运算与IO操纵,这两个是可以同时并行实行的,也就是说在IO读取内存磁盘的时间,这个过程是不必要CPU到场的,CPU与IO可以同时处置处罚自己工作,这相对于单线程串行来说就实现了并行的加快结果,更加公道的利用了时间资源。
3、多CPU并行 【多历程】

这种多核CPU多条线同时处置处罚我们的步调,这种并行的方式才是真正的并发,多个CPU就相称于多个工人,工人多了服从天然就高了。
4、多呆板并行

这种方法更加普通易懂,多CPU并行相称于一个工厂里多个工人,而多呆板并行相称于多个工厂,以是服从也就更高了。
三、步调、历程、线程的概念

1、根本概念

①步调:

人编写的,是静态的,没有生命周期,在磁盘上存放,由一系列指令和数据构成的文件,这些文件可以被操纵体系加载到内存中并实行。
②历程:

历程就是步调的一次实行过程,一段步调的每一次运行都会产生一个或多个历程。
③线程:

是历程中的一个实体,是步调实行的一条分支,也是步调实行流的最小单元,被体系独立调治和分派。
2、区分:

①历程与步调:

历程是有生命期的,大部门会随着步调的运行而创建,随看步调的竣事而终制止,也可以去手动竣事历程。
在操纵体系中,历程是操纵体系举行资源分配和调治的根本单元。
每个历程都有自已的私有所在空间、实行堆栈、步调计数器、局部变量以及其他体系资源(如文件形貌符、网络毗连等)等。
普通的说,一个正在运行的步调就是一个历程,好比QQ、微信等,但也有大概这个步调会天生多个历程。
②历程与线程:

线程自己不拥有体系资源,只拥有一点儿在运行中必不可少的资源,如调用栈、寄存器情况等,但它可与同属一个历程的别的线程共享历程所拥有的全部资源,如假造所在空间、文件形貌符等。
③并发性‌:

线程之间可以并发实行,使体系具有更好的并发性,从而能更有效地利用体系资源和进步体系吞吐量。
‌④体系开销‌:

线程的创建、撤消和切换的开销远小于历程,由于线程不涉及存储管理方面的操纵。
‌⑤主线程与子线程‌:

步调启动时,操纵体系会创建一个主线程,主线程可以产生别的子线程,子线程启动后会和主线程一起同时实行‌。
四、Python对并发编程的支持

1、多线程:

threading模块,利用CPU和IO可以同时实行的原理,让CPU不会干巴巴的期待IO完成。
2、多历程:

multiprocessing模块,利用多核CPU的本领,真正的并行实利用命。
3、异步IO:

asyncio模块,在单线程中利用CPU和IO同时实行的原理,实现函数异步实行。
4、Python还提供了辅助这些模块的函数:


      
  • 多线程与多历程同时访问同一个文件同时写入的话就会辩论,可以利用Python提供的Lock来对资源举行加锁,防止辩论访问,就能实现序次访问同一个文件。  
  • 利用Queue模块(队列)实现差别线程/历程之间的数据通讯,实现生产者-消耗者模式,好比实现一个生产者消耗者模式来改造爬虫,生产者一边爬取,消耗者就一边分析。  
  • 利用线程池/历程池,简化线程/历程的使命提交,期待竣事,获取结果。  
  • 利用subprocess启动外部步调的历程,并举行输入输出交互。
五、Python怎样选择多线程,多历程与多协程

1、什么是CPU麋集型盘算,IO麋集型盘算

CPU麋集型实在就是你步调的运行终极会受到CPU的限定,CPU是你步调运行的瓶颈,IO麋集型则是你步调的运行终极会受到IO的限定,IO是你步调运行的瓶颈。
①CPU麋集型(CPU-bound):

CPU麋集型也叫盘算麋集型,是指IO操纵在很短的时间内就能完成,CPU必要大量的盘算和处置处罚,而并不必要频仍的磁盘读写,网络传输等操纵,特点是CPU占用率相称高。
比方:加密解密,图像处置处罚,科学盘算等必要大量的CPU运算本领以及较少的IO操纵等使命。
并行上风:【多历程】CPU麋集型使命可以通过并行在差别的处置处罚器焦点上同时实行进步性能。
②IO麋集型(IO-bound):

回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表