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