首页 > 编程语言 > 详细

python-IO多路复用,select模块

时间:2018-06-16 10:08:07      阅读:223      评论:0      收藏:0      [点我收藏+]

触发机制: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模块

原文:https://www.cnblogs.com/benchdog/p/9189647.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!