Python多进程协程爬虫----1
来源:互联网 发布:松下plc编程视频教程 编辑:程序博客网 时间:2024/06/05 16:01
考虑到CPU和IO之间巨大的速度差异,一个任务在执行的过程中大部分时间都在等待IO操作,单进程单线程模型会导致别的任务无法并行执行,因此,我们才需要多进程模型或者多线程模型来支持多任务并发执行。
现代操作系统对IO操作已经做了巨大的改进,最大的特点就是支持异步IO。如果充分利用操作系统提供的异步IO支持,就可以用单进程单线程模型来执行多任务,这种全新的模型称为事件驱动模型,Nginx就是支持异步IO的Web服务器,它在单核CPU上采用单进程模型就可以高效地支持多任务。在多核CPU上,可以运行多个进程(数量与CPU核心数相同),充分利用多核CPU。由于系统总的进程数量十分有限,因此操作系统调度非常高效。用异步IO编程模型来实现多任务是一个主要的趋势。
对应到Python语言,单线程的异步编程模型称为协程,有了协程的支持,就可以基于事件驱动编写高效的多任务程序。一、协程
注意到consumer
函数是一个generator
,把一个consumer
传入produce
后:
首先调用
c.send(None)
启动生成器;然后,一旦生产了东西,通过
c.send(n)
切换到consumer
执行;consumer
通过yield
拿到消息,处理,又通过yield
把结果传回;produce
拿到consumer
处理的结果,继续生产下一条消息;produce
决定不生产了,通过c.close()
关闭consumer
,整个过程结束。
整个流程无锁,由一个线程执行,produce
和consumer
协作完成任务,所以称为“协程”,而非线程的抢占式多任务。
最后套用Donald Knuth的一句话总结协程的特点:
“子程序就是协程的一种特例。”
“但是Python的yield不但可以返回一个值,它还可以接收调用者发出的参数。” ---------------廖雪峰二、asynicio
阅读全文
0 0
- Python多进程协程爬虫----1
- python爬虫-多进程
- python 多进程爬虫案例
- python爬虫学习多进程下载图片
- Python爬虫学习笔记--多进程用法
- python爬虫——多进程multiprocessing
- python scrapy多进程新闻爬虫
- python爬虫:编写多进程爬虫学习笔记
- python多线程、异步、多进程+异步爬虫
- Python多线程、异步+多进程爬虫实现代码
- python爬虫(中)--多进程和多线程
- Python中多进程在爬虫中的使用
- python爬虫进阶(四):多线程与多进程
- 之前用的一个多进程python爬虫
- python queue和多线程的爬虫 与 JoinableQueue和多进程的爬虫
- python写爬虫5-多进程爬虫(采集58出租房信息)
- 多进程 多线程 异步 爬虫(1)
- 多进程爬虫
- CodeForces
- Microsoft SQL Server学习(四)--约束
- Fliptile 暴力枚举(可以写成搜索。。。)
- Framework学习(五)应用程序启动过程
- 给定两个排好顺序的数组,快速找到两数组中相同的数值
- Python多进程协程爬虫----1
- Matlab中控制系统设计pade语句
- Combination Sum
- fastjson:实现对java.nio.ByteBuffer数据类型的支持
- (二)从JSP说起
- 最大连续子序列最大和的四种解法
- 【广告算法工程师入门 13】机制设计-私人价值模型下四种拍卖形式的报价策略与均衡分析
- [BZOJ]2144: 跳跳棋 二分+LCA
- hibernate-mysql中hql语句的表名首字母大写其他小写?并不是这样的