关于python使用epoll进行监听处理事件的demo
import select
import socket
# 创建 epoll 对象
epoll = select.epoll()
# 创建套接字
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_address = ('127.0.0.1', 8080)
server_socket.bind(server_address)
server_socket.listen(10)
# 将服务器套接字添加到 epoll 中,监听读事件
epoll.register(server_socket.fileno(), select.EPOLLIN)
connections = {}
try:
while True:
# 等待事件发生
events = epoll.poll(1)
for fileno, event_type in events:
if fileno == server_socket.fileno():
# 有新连接
client_socket, client_address = server_socket.accept()
print(f"New connection from {client_address}")
# 将新连接的套接字添加到 epoll 中
epoll.register(client_socket.fileno(), select.EPOLLIN)
connections[client_socket.fileno()] = client_socket
elif event_type & select.EPOLLIN:
# 可读事