python中的select模块
介绍: Python中的select模块专注于I/O多路复用,提供了select poll epoll三个方法(其中后两个在Linux中可用,windows仅支持select),另外也提供了kqueue方法(freeBSD系统) select方法: 进程指定内核监听哪些文件描述符(最多监听1024个fd)的哪些事件,当没有文件描述符事件发生时,进程被阻塞;当一个或者多个文件描述符事件发生时,进程被唤醒。 当我们调用select()时: 1 上下文切换转换为内核态 2 将fd从用户空间复制到内核空间 3 内核遍历所有fd,查看其对应事件是否发生 4 如果没发生,将进程阻塞,当设备驱动产生中断或者timeout时间后,将进程唤醒,再次进行遍历 5 返回遍历后的fd 6 将fd从内核空间复制到用户空间 fd:file descriptor 文件描述符 fd_r_list, fd_w_list, fd_e_list = select.select(rlist, wlist, xlist, [timeout]) 参数: 可接受四个参数(前三个必须)rlist: wait until ready for readingwlist: wait until ready for writingxlist: wait for an “exceptional condition