摘要: FAQ? 前面介绍了gevent实现了协程,同时在遇到I/O操作时实现协程的自动切换,协程之所以能够处理大并发,其实就是把I/O操作给挤掉了,最后整个程序就变成了只有CPU的运算,由于CPU的速度很快,所以就感觉实现并发的效果。那么它和我们所说的事件驱动有什么关系吗?几个任务切换执行,当程序遇到I/ 阅读全文
posted @ 2017-12-14 23:58 Mr.hu 阅读(105) 评论(0) 推荐(0) 编辑
摘要: 事件驱动与异步IO 通常,我们写服务器处理模型的程序时,有以下几种模型: (1)每收到一个请求,创建一个新的进程,来处理该请求; (2)每收到一个请求,创建一个新的线程,来处理该请求; (3)每收到一个请求,放入一个事件列表,让主进程通过非阻塞I/O方式来处理请求 上面的几种方式,各有千秋, 第(1 阅读全文
posted @ 2017-12-14 23:56 Mr.hu 阅读(94) 评论(0) 推荐(0) 编辑
摘要: 概述 前面我们介绍了gevent遇到I/O操作就会自动切换,现在我们使用gevent爬一个实际的网页下来 串行爬网页 gevent协程爬网页 通过以上同步和异步爬网页所花的时间,我们并不能看见并发比串行速度上快多少?为什么? 其实urllib默认和gevent是没有关系的。urllib现在默认情况下 阅读全文
posted @ 2017-12-14 23:46 Mr.hu 阅读(237) 评论(0) 推荐(0) 编辑
摘要: 产生的问题 前面介绍了greenlet实现了协程,但是在遇到I/O操作时,还没实现自动切换,下面可以通过gevent模块实现该功能。 gevent的好处在于可以自动切换协程,一般来说I/O操作比较耗时,那么当一个协程在等待I/O时,它会自动切换到其他协程工作,这样就能够充分利用CPU了。 概述 Ge 阅读全文
posted @ 2017-12-14 16:51 Mr.hu 阅读(268) 评论(0) 推荐(0) 编辑