【学习笔记_python进阶】epoll版本服务器
程序员文章站
2022-06-13 22:46:33
...
相比线程进程协程实现的多任务服务器,效率大大提高
前者工作原理是 linux底层中,服务器所占进程空间和内核空间分开,通过遍历监听套接字,判断客户端是否有传来数据。从服务器运行内存中遍历监听套接字对应fd复制到内核内存,操作系统才可以调用fd对应的方法完成任务。
后者epoll
1.操作系统中一个特殊的内存空间,内核和服务器共享的内存空间,节省了复制的过程
2.事件通知方式
没理解透
1 import select
2
3
4 # 创建epoll对象
5 epl = select.epoll()
6
7 # 将监听套接字对应的fd注册到epoll中
8 epl.register(tcp_server_socket.fileno(), select.EPOLLIN)
9
10 # 文件描述符字典
11 fd_event_dict = dict()
12
13 while True:
14
15 fd_event_list = epol.poll()
16
17 for fd, event in fd_event_dict:
18 new_socket, client_addr = tcp_server_socket.accept()
19 epl.register(new_socket.fileno(), select.EPOLLIN)
20 fd_event_dict[new_socket.fileno()] = new_socket
21
22 elif event == select.EPOLLIN:
23 recv_data = fd_event_dict[fd].recv(1024).decode("utf-8")
24 if recv_data:
25 service_client(fd_event_dict[fd], recv_data)
26 else:
27 fd_event_dict[fd].close()
28 epl.unregister(fd)
29 del fd_event_dict[fd]
30
上一篇: 荣耀MagicBook Pro锐龙版512GB零点开始秒杀:3699元到手
下一篇: epoll
推荐阅读
-
python网络编程学习笔记(三):socket网络服务器
-
Python进阶_I/O进阶学习笔记_2.魔法函数
-
Python学习笔记(二)——编程0基础数据分析进阶之路
-
36篇博文带你学完opencv :python+opencv进阶版学习笔记目录
-
Python进阶学习笔记——HTTP协议(2):HTTP请求报文
-
Socket学习笔记(一):python通过socket实现客户端到服务器端的文件传输
-
python学习笔记:第10天 函数进阶和作用域
-
Python学习笔记【第十篇】:Python面向对象进阶
-
【学习笔记_python进阶】epoll版本服务器
-
Python进阶_I/O进阶学习笔记_2.魔法函数