觸發機制:1)水平觸發;2)邊緣觸發
io多路復用單執行緒實現併發,實現模組:1)select(效率最低); 2)poll;3)epoll(最好,nginx的實現)。linux下有這3種模組,windows下只有select模組
io多路復用的好處:同時可以監聽多個連線
io多路復用的select模組觸發機制:水平觸發
ps:非同步:整個過程中,不能有一絲的阻塞
client端:
importsocket
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端:
importsocket
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()
(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多路復用
用for迴圈執行多使用者訪問 sever import socket sk1 socket.socket sk1.bind 127.0.0.1 888 sk1.listen import select ipt sk1,output message dic eer while true r list,...
Python IO多路復用select模組
多路復用的分析例項 服務端 客戶端 服務端配置 from socket import import time import select server socket af inet,sock stream server.bind 127.0.0.1 8080 server.listen 5 serv...
Linux IO多路復用
一.select 函式 include include include int select int n,fd set readfds,fd set writefds,fd set exceptfds,struct timeval timeout fd clr int fd,fd set set f...