python爬虫13 | 秒爬,这多线程爬取速度也太猛了,这次就是要让你的爬虫效率杠杠的
快
快了
啊

嘿
小老弟
想啥呢
今天这篇爬虫教程的主题就是一个字
快
想要做到秒爬
就需要知道
什么是多进程
什么是多线程
什么是协程(微线程)
你先去沏杯茶
坐下来
小帅b这就好好给你说道说道
关于线程这玩意
沏好茶了吗
那么
接下来就是

首先我们来了解什么是进程
进程就是正在运行的程序
比如你的系统现在运行着的微信
就是一个进程
一旦你的「微信」运行起来
系统就会给「微信」分配了内存和资源

那什么是单进程呢?
单进程就是说你的电脑只能做一件事情
比如
你在电脑打开了微信
就不能再去打开淘宝了

但是你会发现
现在你的电脑
很是牛逼
可以一边看片一边听歌
可以一边玩游戏一边撸代码
这就是多进程
你的电脑
在同一段时间里面
可以 “同时” 执行多个任务
这样是不是提高了你家 CPU 的使用率了呢

其实
一个单核的 CPU 在一个时间点上只能运行一个程序
之所以你能感觉到你电脑上的程序在同时运行
是因为
CPU 在做着切换
因为 CPU 的切换速度超级快

快到让你感觉到
你开着的所有程序好像是在同时运行

知道了什么是进程之后
我们再来谈谈线程
在一个进程里面
可以执行多个任务
在这里的每一个任务就是线程
线程可以说是程序用 CPU 的一个基本单元
所以
一个程序里面如果只是单一的一个执行路径
那么它就是单线程的
一个程序如果有多个执行路径
那么它就是多线程的
所以你想要让你的爬虫高效
就可以让你的爬虫实现多线程
这样它就可以有更加高的几率抢到 CPU 的执行权

每当小帅b跟别人吹线程的时候
还会说到并行和并发
我们刚刚说了
一个单核的 CPU
它每次只能执行一个进程
那么如果是多核的 CPU 呢
是不是就可以同时执行多个进程了
这就是并行
在某一个时间段里,可以同时执行多个进程

而并发呢
就是在一个时间点,同时执行多个进程
你想想
在双十一的时候
是不是在那个晚上的 12 点
很多人同时秒杀了某一个商品
这就是并发

在系统里面
进程和进程之间是互相独立的
而一个进程里面的多个线程
这些线程之间是共享一个进程空间的
这个时候
线程就要搞事情了
毕竟一块蛋糕被共享了
谁都想多分一点
就挤破头的想要抢占多一点资源
哇靠啊
这可不行啊
这样数据就不安全了
所以就有了互斥锁
所谓互斥锁
就是让线程乖一点
别他妈的乱来
一个一个线程安全有序的去执行

在 python 里呢
有一个叫做 GIL 锁
这个锁是干嘛的呢
它就是用来控制线程执行权限的
所以当一个线程需要执行的时候
要先获得 GIL 之后才可以执行
这样就不会产生线程安全问题
但有一个问题是
那他妈的还多线程个毛啊?
恩..有一点是
在 I/O 流阻塞的时候,GIL会被释放
(I/O流就是输入输出流,如果你此刻不太理解这个概念也没关系)

所以呀
我们的 Python 程序
如果是要处理多任务,想要充分的去利用我们多核的CPU
就开启多进程(multiprocessing)
而对于一些输入输出的多任务
就开启多线程(threading.Thread、multiprocessing.dummy)
哦对了
还有一个玩意叫做协程
协程也叫做微线程
在一个线程里面可以执行多个函数
线程和进程是通过系统调度的
而微线程则不需要,可以根据需要自己调度
因为微线程是函数之间在切换
所以开销很小
在 python 中使用微线程时一般会用到 genvent、monkey.patch_all

本篇就到这里
主要让你理解这几个概念
下一篇
小帅b就会使用多进程、多线程、协程的方式来实现 python 的爬虫
敬请

近期文章
python爬虫12 | 爸爸,他使坏,用动态的 Json 数据,我要怎么搞?
python爬虫11 | 这次,将带你爬取b站上的NBA形象大使蔡徐坤和他的球友们

扫一扫
学习 Python 没烦恼

点个好看啊~~(破音)

python爬虫13 | 秒爬,这多线程爬取速度也太猛了,这次就是要让你的爬虫效率杠杠的的更多相关文章
- Python爬虫入门教程: All IT eBooks多线程爬取
All IT eBooks多线程爬取-写在前面 对一个爬虫爱好者来说,或多或少都有这么一点点的收集癖 ~ 发现好的图片,发现好的书籍,发现各种能存放在电脑上的东西,都喜欢把它批量的爬取下来. 然后放着 ...
- Python爬虫入门教程 14-100 All IT eBooks多线程爬取
All IT eBooks多线程爬取-写在前面 对一个爬虫爱好者来说,或多或少都有这么一点点的收集癖 ~ 发现好的图片,发现好的书籍,发现各种能存放在电脑上的东西,都喜欢把它批量的爬取下来. 然后放着 ...
- Python爬虫入门教程 13-100 斗图啦表情包多线程爬取
斗图啦表情包多线程爬取-写在前面 今天在CSDN博客,发现好多人写爬虫都在爬取一个叫做斗图啦的网站,里面很多表情包,然后瞅了瞅,各种实现方式都有,今天我给你实现一个多线程版本的.关键技术点 aioht ...
- Python爬虫入门教程 11-100 行行网电子书多线程爬取
行行网电子书多线程爬取-写在前面 最近想找几本电子书看看,就翻啊翻,然后呢,找到了一个 叫做 周读的网站 ,网站特别好,简单清爽,书籍很多,而且打开都是百度网盘可以直接下载,更新速度也还可以,于是乎, ...
- python多线程爬取世纪佳缘女生资料并简单数据分析
一. 目标 作为一只万年单身狗,一直很好奇女生找对象的时候都在想啥呢,这事也不好意思直接问身边的女生,不然别人还以为你要跟她表白啥的,况且工科出身的自己本来接触的女生就少,即使是挨个问遍,样本量也 ...
- Python多线程爬图&Scrapy框架爬图
一.背景 对于日常Python爬虫由于效率问题,本次测试使用多线程和Scrapy框架来实现抓取斗图啦表情.由于IO操作不使用CPU,对于IO密集(磁盘IO/网络IO/人机交互IO)型适合用多线程,对于 ...
- python多线程爬取斗图啦数据
python多线程爬取斗图啦网的表情数据 使用到的技术点 requests请求库 re 正则表达式 pyquery解析库,python实现的jquery threading 线程 queue 队列 ' ...
- Python爬虫教程-13-爬虫使用cookie爬取登录后的页面(人人网)(下)
Python爬虫教程-13-爬虫使用cookie爬取登录后的页面(下) 自动使用cookie的方法,告别手动拷贝cookie http模块包含一些关于cookie的模块,通过他们我们可以自动的使用co ...
- python多线程爬取图片实例
今天试着把前面那个爬取图片的爬虫改成了多线程爬取,虽然最后可以爬取存储图片了,但仍存在一些问题.网址还是那个网址https://www.quanjing.com/category/1286521/1. ...
随机推荐
- bzoj2243【SDOI2011】染色
2243: [SDOI2011]染色 Time Limit: 20 Sec Memory Limit: 512 MB Submit: 4537 Solved: 1702 [id=2243" ...
- click事件触发也有失灵的时候?
今天做了个手机页面,点击某个按钮->弹出菜单,再点击菜单以外的任意位置->关闭菜单,在其他浏览器里面没有问题,但是在IOS浏览器中并不会关闭. 网上解决这个bug的帖子很多,这篇帖子主要是 ...
- ios16--自定义控件1
k控制器: // // XMGViewController.h #import <UIKit/UIKit.h> @interface XMGViewController : UIViewC ...
- strok函数用法【转】
本文转载自:http://blog.csdn.net/hexiechina2010/article/details/25096763 char *strtok( char *strToken, con ...
- poj2104 k-th number 主席树入门讲解
poj2104 k-th number 主席树入门讲解 定义:主席树是一种可持久化的线段树 又叫函数式线段树 刚开始学是不是觉得很蒙逼啊 其实我也是 主席树说简单了 就是 保留你每一步操作完成之后 ...
- Bing Maps进阶系列五:通过DeepEarth的MiniMap控件为Bing Maps扩展迷你小地图
Bing Maps进阶系列五:通过DeepEarth的MiniMap控件为Bing Maps扩展迷你小地图 Bing Maps Silverlight Control虽然为我们提供了简洁.方便的开发模 ...
- AD、DNS、DHCP、IIS、WINS的形象定义及关系
AD-实际是就是一个包括所有信息的数据库,和现实生活中就将其比作派出所,所有的信息都要进入他那的数据库当中(包括人员姓名(计算机名.账号.密码等) DNS就是建立起关联起好记忆的名称,比如你家的位置用 ...
- StackExchange.Redis 使用资料
在StackExchange.Redis中最重要的对象是ConnectionMultiplexer类, 它存在于StackExchange.redis命名空间中.这个类隐藏了Redis服务的操作细节, ...
- ShaderLab中vertex fragment类Shader基础格式笔记
//U3D用的shader语言叫ShaderLab,基础语法官方文档地址 //https://docs.unity3d.com/Manual/SL-Shader.html //开头指明名字,可以在别的 ...
- 悼念512汶川大地震遇难同胞——老人是真饿了 hdu 2187
在此对 曾经 努力参加 救援的人 致以深深的敬意 . 这一道题 挺简单的 就是简单的 结构体+贪心 而已 不过 用英文 注释 是一个 很大的 进步 , 以后 要习惯 http://acm.hdu ...