python异步IO
转:https://www.cnblogs.com/nulige/p/6297829.html
select_module.py
import selectors import socket sel = selectors.DefaultSelector() def accept(sock, mask): conn, addr = sock.accept() # Should be ready print('accepted', conn, 'from', addr) conn.setblocking(False) #设置成非阻塞 sel.register(conn, selectors.EVENT_READ, read) #conn绑定的是read def read(conn, mask): try: data = conn.recv(1000) # Should be ready if not data: raise Exception print('echoing', repr(data), 'to', conn) conn.send(data) # Hope it won't block except Exception as e: print('closing', conn) sel.unregister(conn) #解除注册 conn.close() sock = socket.socket() sock.bind(('localhost', 8090)) sock.listen(100) sock.setblocking(False) #注册 sel.register(sock, selectors.EVENT_READ, accept) print("server....") while True: events = sel.select() #监听[sock,conn1,conn2] print("events",events) #拿到2个元素,一个key,一个mask for key, mask in events: # print("key",key) # print("mask",mask) callback = key.data #绑定的是read函数 # print("callback",callback) callback(key.fileobj, mask) #key.fileobj=sock,conn1,conn2
client.py
import socket sk=socket.socket() sk.connect(("127.0.0.1",8090)) while 1: inp=input(">>>") sk.send(inp.encode("utf8")) #发送内容 data=sk.recv(1024) #接收信息 print(data.decode("utf8")) #打印出来
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· AI Agent开发,如何调用三方的API Function,是通过提示词来发起调用的吗