登录
首页精彩阅读难怪协程爬虫那么快,原来是因为
难怪协程爬虫那么快,原来是因为
2022-08-10
收藏

作者:小K

来源:麦叔编程

Python三分钟第132篇让大家从协程爬虫计算密集型和IO密集型两个主题中选取一个来讲解,很多小伙伴表示太难了。

小孩子才做选择,不能全要吗?

感谢大家的支持,今天的Python三分钟给大家介绍下计算密集型和IO密集型。

这个知识比较偏硬件,如果掌握这两个知识点,相信大家在异步、并发、并行编程会有更大的进步。

今天的文章也不会出现任何代码,也适合不会Python的同学食用。

什么是CPU密集型

CPU密集型也叫计算密集型,这部分工作基本上都是都是CPU完成的。

例如用电脑计算1亿个数的平均数。

CPU密集表示某任务有着大量的运算且没有阻塞(休息时间),CPU始终全速运行。

最直观的体现形式是任务开启后,CPU温度将急剧上升,散热风扇运转速度也会变快。

什么是IO密集型

与CPU密集型不同,IO密集型工作基本是由磁盘等储存设备完成的。

IO是输入、输出的缩写(Input、Output)。

像我们用U盘往电脑拷贝大型文件,那是最经典的IO密集型任务。

网络爬虫属于CPU密集型任务还是IO密集型任务?

这个问题不太好回答,要从实际情况进行分析,如果爬虫需要突破对方服务器的安全措施(反爬),可能也会涉及大量的解密计算。

这样的爬虫应该要被分到CPU密集型任务里去的。

如果就像上篇文章中的协程爬虫那样,只是负责发送请求和接收请求,CPU参与度不高。

这样的爬虫应该要被分到IO密集型任务里去的。

但是协程爬虫存在大量的计算任务,那。。。。。没啥必要用协程了。

如果Baidu的服务器响应速度能再快一点,我相信我们的协程爬虫速度也会更快一点。

Python的GIL

说到计算密集型就不得不提Python的GIL(全局解释器锁)。

因为GIL的存在,CPython解释器只能运行在一个进程之中,CPython没有真正的多进程,所以硬件上CPU核心再怎么多也没什么用,CPython只能用到一个核。

计算密集型是CPython的软肋。

但是CPython在处理IO密集型任务还是非常棒的,尤其引入了协程之后。

如果你对GIL的概念一知半解,请留言GIL,我将会专门开一期对其讲解。

数据分析咨询请扫描二维码

客服在线
立即咨询