您当前的位置:首页 > 电脑百科 > 程序开发 > 语言 > Python

Python3多线程爬虫实例讲解

时间:2019-10-28 16:51:32  来源:  作者:

多线程概述

多线程使得程序内部可以分出多个线程来做多件事情,充分利用CPU空闲时间,提升处理效率。Python提供了两个模块来实现多线程thread 和threading ,thread 有一些缺点,在threading 得到了弥补。并且在Python3中废弃了thread模块,保留了更强大的threading模块。

使用场景

在python的原始解释器CPython中存在着GIL(Global Interpreter Lock,全局解释器锁),因此在解释执行python代码时,会产生互斥锁来限制线程对共享资源的访问,直到解释器遇到I/O操作或者操作次数达到一定数目时才会释放GIL。所以,虽然CPython的线程库直接封装了系统的原生线程,但CPython整体作为一个进程,同一时间只会有一个获得GIL的线程在跑,其他线程则处于等待状态。这就造成了即使在多核CPU中,多线程也只是做着分时切换而已。

如果你的程序是CPU密集型,多个线程的代码很有可能是线性执行的。所以这种情况下多线程是鸡肋,效率可能还不如单线程因为有上下文切换开销。但是如果你的代码是IO密集型,涉及到网络、磁盘IO的任务都是IO密集型任务,多线程可以明显提高效率,例如多线程爬虫,多线程文件处理等等

多线程爬虫

多线程爬虫的代码实例

注:以下代码在python3下运行通过, python2版本差异较大,不能运行成功,如需帮助请下方留意。

Python3多线程爬虫实例讲解

 

运行结果:

1个线程时:

Python3多线程爬虫实例讲解

 

2个线程时:

Python3多线程爬虫实例讲解

 

3个线程时:

Python3多线程爬虫实例讲解

 

通过调节线程数可以看到,执行时间会随着线程数的增加而缩短,抓取效率成正比增加。

总结:

Python多线程在IO密集型任务,多线程可以明显提高效率,CPU密集型任务不适合使用多线程处理。



Tags:Python3   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
上次自己整理并做了一次进度条大全,很受欢迎和喜欢,这次升级一下,介绍高级进度条大全的新方法,希望大家喜欢,并收藏和转发,仅供学习分享使用。有点长,适合收藏,慢慢享用。 一:progre...【详细内容】
2020-09-29  Tags: Python3  点击:(146)  评论:(0)  加入收藏
CentOS(Community Enterprise Operating System,中文意思是社区企业操作系统)是Linux发行版之一,它是来自于Red Hat Enterprise Linux依照开放源代码规定释出的源代码所编译而成...【详细内容】
2020-09-03  Tags: Python3  点击:(34)  评论:(0)  加入收藏
1 说明:=====1.1 参考文章:https://www.cnblogs.com/xp12345/p/9818435.html1.2 对原代码进行注释,调试,增加PIL法显示中文标示。1.3 获取摄像头实现动态人脸识别。1.4 分为:侦测...【详细内容】
2020-08-24  Tags: Python3  点击:(98)  评论:(0)  加入收藏
AngelSword简介AngelSword是一款由Python3编写的CMS识别工具,界面如下 AngelSword安装纯Python需要装9个模块,分别是paramiko==2.4.2pymongo==3.7.2PyMySQL==0.9.2pexpect==...【详细内容】
2020-07-23  Tags: Python3  点击:(154)  评论:(0)  加入收藏
由于Python的版本更迭,很多人将自己的Python版本从2换成了3。这两个版本中,有一个非常出名的改变之一是: Python 2中的 print 函数被 Python 3中的 print()函数所代替。但是,如果...【详细内容】
2020-07-16  Tags: Python3  点击:(33)  评论:(0)  加入收藏
亲测有效,针对 阿里云, 华为云 centos 7 轻量服务器python ==> 3.7.8pip ==> 3一,打开python官网,找到下载Python的tgz文件,有两种方式下载 (版本可能更新,进官网核实为准) 1,直接在...【详细内容】
2020-07-01  Tags: Python3  点击:(72)  评论:(0)  加入收藏
前言使用Python的伙伴们,经常会用到print输出日志进行调试,那么如何格式化输出字符串?今天跟大家继续分享关于Python的小知识。 说明我们经常会用到%-formatting和str.format()...【详细内容】
2020-06-26  Tags: Python3  点击:(49)  评论:(0)  加入收藏
1 说明:=====1.1 吸烟有害健康!!纯属娱乐和学习python的相关知识。1.2 虽然是娱乐,但是opencv、dlib和python在人工智能、人脸识别、自动化等有很大作用,目前已经或者未来会有更...【详细内容】
2020-06-05  Tags: Python3  点击:(181)  评论:(0)  加入收藏
Python 3.8稳定版于2019年10月14日发布,相信还有很多项目并没有升级到3.8版本,今天有一个项目经理问我:我们项目组要升级到Python3.8,3.8和3.7有什么区别呢?你能不能跟我讲一下...【详细内容】
2020-04-21  Tags: Python3  点击:(58)  评论:(0)  加入收藏
想做一个有趣的项目,首先整理一下思路,如何快速爬取关键信息。并且实现自动翻页功能。 想了想用最常规的requests加上re正则表达式,BeautifulSoup用于批量爬取import requestsi...【详细内容】
2020-04-01  Tags: Python3  点击:(128)  评论:(0)  加入收藏
▌简易百科推荐
大家好,我是菜鸟哥,今天跟大家一起聊一下Python4的话题! 从2020年的1月1号开始,Python官方正式的停止了对于Python2的维护。Python也正式的进入了Python3的时代。而随着时间的...【详细内容】
2021-12-28  菜鸟学python    Tags:Python4   点击:(1)  评论:(0)  加入收藏
学习Python的初衷是因为它的实践的便捷性,几乎计算机上能完成的各种操作都能在Python上找到解决途径。平时工作需要在线学习。而在线学习的复杂性经常让人抓狂。费时费力且效...【详细内容】
2021-12-28  风度翩翩的Python    Tags:Python   点击:(1)  评论:(0)  加入收藏
Python 是一个很棒的语言。它是世界上发展最快的编程语言之一。它一次又一次地证明了在开发人员职位中和跨行业的数据科学职位中的实用性。整个 Python 及其库的生态系统使...【详细内容】
2021-12-27  IT资料库    Tags:Python 库   点击:(2)  评论:(0)  加入收藏
菜单驱动程序简介菜单驱动程序是通过显示选项列表从用户那里获取输入并允许用户从选项列表中选择输入的程序。菜单驱动程序的一个简单示例是 ATM(自动取款机)。在交易的情况下...【详细内容】
2021-12-27  子冉爱python    Tags:Python   点击:(4)  评论:(0)  加入收藏
有不少同学学完Python后仍然很难将其灵活运用。我整理15个Python入门的小程序。在实践中应用Python会有事半功倍的效果。01 实现二元二次函数实现数学里的二元二次函数:f(x,...【详细内容】
2021-12-22  程序汪小成    Tags:Python入门   点击:(32)  评论:(0)  加入收藏
Verilog是由一个个module组成的,下面是其中一个module在网表中的样子,我只需要提取module名字、实例化关系。module rst_filter ( ...); 端口声明... wire定义......【详细内容】
2021-12-22  编程啊青    Tags:Verilog   点击:(9)  评论:(0)  加入收藏
运行环境 如何从 MP4 视频中提取帧 将帧变成 GIF 创建 MP4 到 GIF GUI ...【详细内容】
2021-12-22  修道猿    Tags:Python   点击:(6)  评论:(0)  加入收藏
面向对象:Object Oriented Programming,简称OOP,即面向对象程序设计。类(Class)和对象(Object)类是用来描述具有相同属性和方法对象的集合。对象是类的具体实例。比如,学生都有...【详细内容】
2021-12-22  我头秃了    Tags:python   点击:(9)  评论:(0)  加入收藏
所谓内置函数,就是Python提供的, 可以直接拿来直接用的函数,比如大家熟悉的print,range、input等,也有不是很熟,但是很重要的,如enumerate、zip、join等,Python内置的这些函数非常...【详细内容】
2021-12-21  程序员小新ds    Tags:python初   点击:(5)  评论:(0)  加入收藏
Hi,大家好。我们在接口自动化测试项目中,有时候需要一些加密。今天给大伙介绍Python实现各种 加密 ,接口加解密再也不愁。目录一、项目加解密需求分析六、Python加密库PyCrypto...【详细内容】
2021-12-21  Python可乐    Tags:Python   点击:(8)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条