上一页 1 2 3 4 5 6 7 8 9 10 ··· 16 下一页
摘要: 一 了解select,poll,epoll 二 selectors模块 这三种IO多路复用模型在不同的平台有着不同的支持,而epoll在windows下就不支持,好在我们有selectors模块,帮我们默认选择当前平台下最合适的 阅读全文
posted @ 2019-10-13 09:20 不要找借口 阅读(116) 评论(0) 推荐(0) 编辑
摘要: 异步IO(Asynchronous I/O) Linux下的asynchronous IO其实用得不多,从内核2.6版本才开始引入。先看一下它的流程: 用户进程发起read操作之后,立刻就可以开始去做其它的事。而另一方面,从kernel的角度,当它受到一个asynchronous read之后,首先 阅读全文
posted @ 2019-10-13 09:18 不要找借口 阅读(131) 评论(0) 推荐(0) 编辑
摘要: 多路复用IO(IO multiplexing) IO multiplexing这个词可能有点陌生,但是如果我说select/epoll,大概就都能明白了。有些地方也称这种IO方式为 事件驱动IO (event driven IO)。我们都知道,select/epoll的好处就在于单个process就 阅读全文
posted @ 2019-10-13 09:17 不要找借口 阅读(159) 评论(0) 推荐(0) 编辑
摘要: 非阻塞IO(non blocking IO) Linux下,可以通过设置socket使其变为non blocking。当对一个non blocking socket执行读操作时,流程是这个样子: 从图中可以看出,当用户进程发出read操作时,如果kernel中的数据还没有准备好,那么它并不会bloc 阅读全文
posted @ 2019-10-13 09:16 不要找借口 阅读(150) 评论(0) 推荐(0) 编辑
摘要: 阻塞IO(blocking IO) 在linux中,默认情况下所有的socket都是blocking,一个典型的读操作流程大概是这样: 当用户进程调用了recvfrom这个系统调用,kernel就开始了IO的第一个阶段:准备数据。对于network io来说,很多时候数据在一开始还没有到达(比如,还 阅读全文
posted @ 2019-10-13 09:14 不要找借口 阅读(142) 评论(0) 推荐(0) 编辑
摘要: IO模型介绍 同步\异步and阻塞\非阻塞(重点) 同步: 异步: 阻塞: 非阻塞: 小结: 同步(synchronous) IO和异步(asynchronous) IO,阻塞(blocking) IO和非阻塞(non blocking)IO分别是什么,到底有什么区别?这个问题其实不同的人给出的答案 阅读全文
posted @ 2019-10-13 09:12 不要找借口 阅读(181) 评论(0) 推荐(0) 编辑
摘要: 一 gevent模块 Gevent 是一个第三方库,可以轻松通过gevent实现并发同步或异步编程,在gevent中用到的主要模式是 Greenlet , 它是以C扩展模块形式接入Python的轻量级协程。 Greenlet全部运行在主程序操作系统进程的内部,但它们被协作式地调度。 遇到IO阻塞时会 阅读全文
posted @ 2019-10-13 09:11 不要找借口 阅读(179) 评论(0) 推荐(0) 编辑
摘要: 一 greenlet模块 如果我们在单个线程内有20个任务,要想实现在多个任务之间切换,使用yield生成器的方式过于麻烦(需要先得到初始化一次的生成器,然后再调用send。。。非常麻烦),而使用greenlet模块可以非常简单地实现这20个任务直接的切换 单纯的切换(在没有io的情况下或者没有重复 阅读全文
posted @ 2019-10-13 09:10 不要找借口 阅读(180) 评论(0) 推荐(0) 编辑
摘要: 一 引子 一:其中第二种情况并不能提升效率,只是为了让cpu能够雨露均沾,实现看起来所有任务都被“同时”执行的效果,如果多个任务都是纯计算的,这种切换反而会降低效率。为此我们可以基于yield来验证。yield本身就是一种在单线程下可以保存任务运行状态的方法,我们来简单复习一下: 单纯地切换反而会降 阅读全文
posted @ 2019-10-13 09:09 不要找借口 阅读(195) 评论(0) 推荐(0) 编辑
摘要: 一 线程queue queue is especially useful in threaded programming when information must be exchanged safely between multiple threads. 有三种不同的用法 class queue. 阅读全文
posted @ 2019-10-13 09:06 不要找借口 阅读(106) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 7 8 9 10 ··· 16 下一页