select模块以及IO多路复用
前言
Python中的select
模块专注于I/O多路复用,提供了select
, poll
, epoll
三个方法(其中后两个在Linux中可用,windows仅支持select),另外也提供了kqueue
方法(freeBSD系统).
select()的机制中提供一fd_set
的数据结构,实际上是一long
类型的数组, 每一个数组元素都能与一打开的文件句柄(不管是Socket句柄,还是其他文件或命名管道或设备句柄)建立联系,建立联系的工作由程序员完成, 当调用select()时,由内核根据IO状态修改fd_set的内容,由此来通知执行了select()的进程哪一Socket或文件可读或可写。
select主要用于socket通信当中,能监视我们需要的文件描述符变化。