本篇博客是 python 爬虫 120 例中,基础知识补充篇,内容将围绕 python 协程进行。
在开始协程相关知识前,先补充一下预备概念。
在 python 爬虫的学习过程中,经常要区分两个概念,一个叫做 I/O 密集型任务,另一个叫做 计算密集型任务。
以上两种任务,都有 2 个前提,一是存在可执行的子任务,二是需要计算机支持多核 CPU。
I/O 密集型任务
密集型任务指的硬盘 I/O 或者网络 I/O 占主要任务,程序计算量很小,大部分时间都用在请求网页和读写文件上。这种情况下,CPU 经常等待 I/O 操作完成,所以可以利用这些时间去完成其它事务。
基于上述内容,I/O 密集型任务,采用 多线程 就可以提高程序执行效率,当然采用 多进程 也是可以的,但多进程会出现共享资源和通讯问题,因此,I/O 密集型任务,采用多线程即可。
计算密集型任务
也叫作 CPU 密集型任务,在这种情况下,CPU 注意