python-IO多路复用,select模块,,触发机制:1)水平触


触发机制:1)水平触发;2)边缘触发

IO多路复用单线程实现并发,实现模块:1)select(效率最低); 2)poll;3)epoll(最好,nginx的实现)。linux下有这3种模块,windows下只有select模块

IO多路复用的好处:同时可以监听多个连接

IO多路复用的select模块触发机制:水平触发

PS:异步:整个过程中,不能有一丝的阻塞

client端:

import socketsk = socket.socket()sk.connect((‘127.0.0.1‘, 8801))while True:    inp = input(">>>>")    sk.sendall(bytes(inp, "utf8"))    data = sk.recv(1024)    print(str(data, ‘utf8‘))

server端:

import socketimport selectsk=socket.socket()sk.bind(("127.0.0.1",8801))sk.listen(5)inputs=[sk,]while True:    r,w,e=select.select(inputs,[],[],5)    for obj in r:#[sk,]        if obj==sk:            conn,add=obj.accept()            print(conn)            inputs.append(conn)        else:            data_byte=obj.recv(1024)            print(str(data_byte,‘utf8‘))            inp=input(‘回答%s号客户>>>‘%inputs.index(obj))            obj.sendall(bytes(inp,‘utf8‘))    print(‘>>‘,r)

python-IO多路复用,select模块

评论关闭