python IO多路复用

基于select

作用:I/O多路复用是用于提升效率,单个进程可以同时监听多个网络连接IO。

server端

import select
import socket

sk = socket.socket()
sk.bind(('127.0.0.1', 8010))
sk.setblocking(False)
sk.listen()

read_lst = [sk]     #
while True:   # [sk,conn]
    # select提供监听
    r_lst, w_lst, x_lst = select.select(read_lst, [], [])
    # print(read_lst)
    for i in r_lst:
        if i is sk:
            conn, addr = i.accept()
            read_lst.append(conn)
        else:
            ret = i.recv(1024)
            if ret == b'':
                i.close()
                read_lst.remove(i)
                continue
            print(ret)
            i.send(b'bye!')

client端

import time
import socket
import threading


def func():
    sk = socket.socket()
    sk.connect(('127.0.0.1', 8010))
    sk.send(b'hello')
    time.sleep(3)
    print(sk.recv(1024))
    sk.close()


for i in range(5):
    threading.Thread(target=func).start()

主要作用:定制异步框架

转载于:https://www.cnblogs.com/wt7018/p/11624449.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值