python-IO多路复用,select模块
Posted benchdog
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python-IO多路复用,select模块相关的知识,希望对你有一定的参考价值。
触发机制:1)水平触发;2)边缘触发
IO多路复用单线程实现并发,实现模块:1)select(效率最低); 2)poll;3)epoll(最好,nginx的实现)。linux下有这3种模块,windows下只有select模块
IO多路复用的好处:同时可以监听多个连接
IO多路复用的select模块触发机制:水平触发
PS:异步:整个过程中,不能有一丝的阻塞
client端:
import socket sk = 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 socket import select sk=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模块的主要内容,如果未能解决你的问题,请参考以下文章
select模块select IO多路复用和select实现FTP