selecter模块默认使用epoll 实现IO多路复用,展示单线程的并发效果
Posted zhangmingda
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了selecter模块默认使用epoll 实现IO多路复用,展示单线程的并发效果相关的知识,希望对你有一定的参考价值。
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) def read(conn, mask): data = conn.recv(1000) # Should be ready if data: print(‘echoing‘, repr(data), ‘to‘, conn) conn.send(data) # Hope it won‘t block else: print(‘closing‘, conn) sel.unregister(conn) conn.close() sock = socket.socket() sock.bind((‘localhost‘, 10000)) sock.listen(100) sock.setblocking(False) sel.register(sock, selectors.EVENT_READ, accept) while True: events = sel.select() for key, mask in events: callback = key.data callback(key.fileobj, mask)
以上是关于selecter模块默认使用epoll 实现IO多路复用,展示单线程的并发效果的主要内容,如果未能解决你的问题,请参考以下文章
python使用select和epoll实现IO多路复用实现并发服务器
select及触发方式,select监听多链接,select与epoll的实现区别
Day15 - Python基础15 模块学习-selectors