咱们先来简单说一下ioloop的源码
    简单来说一下流程,首先执行上次循环的回调列表,然后调用epoll等待事件的发生,根据fd取出对应的回调函数,然后执行。IOLoop基本是个事件循环,因此它总是被其它模块所调用。
    咱们来看一下ioloop的start方法,start 方法中主要分三个部分:一个部分是对超时的相关处理;一部分是 epoll 事件通知阻塞、接收;一部分是对 epoll 返回I/O事件的处理。

    2.通过 self._impl.poll(poll_timeout) 进行事件阻塞,当有事件通知或超时时 poll 返回特定的 event_pairs,这个上面也说过了。