python IO多路复用
Posted wt7018
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python IO多路复用相关的知识,希望对你有一定的参考价值。
基于select
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()
主要作用:定制异步框架
以上是关于python IO多路复用的主要内容,如果未能解决你的问题,请参考以下文章
python-- IO多路复用(selectpollepoll)介绍及实现
{python之IO多路复用} IO模型介绍 阻塞IO(blocking IO) 非阻塞IO(non-blocking IO) 多路复用IO(IO multiplexing) 异步IO