python并发原理(阻塞、非阻塞、epoll)
发布时间:2020-07-23 20:03:54 所属栏目:Python 来源:互联网
导读:在Linux系统中01 阻塞服务端特征:1对1,阻塞。1 import socket23 server = socket.socket() #生成套接字对象4 server.bind((0.0.0.0, 8000)) #套接字绑定ip和端口,变为监听套接字5 server.listen(5) #开始监听67 while True:8 conn, addr = server.accept()
在Linux系统中01 阻塞服务端 特征:1对1,阻塞。<div class="cnblogs_code"> server = socket.socket() server.bind((,8000)) server.listen(5) conn,addr = server.accept() ( data = conn.recv(1024 data == b data == b ( ( 02 非阻塞服务端 特征:1对多,轮询,非阻塞,占用资源多。<div class="cnblogs_code"> server = socket.socket() server.setblocking(False) server.bind((,8001)) server.listen(5) all_connection = [] conn,addr = server.accept() conn.setblocking(False) ( handle = all_connection.copy() connection recv_data = connection.recv(1024 : ( all_connection.remove(connection) 03 epoll服务端 特征:1对多,通知机制,非阻塞,占用资源少;epoll:注册惰性事件回调。<div class="cnblogs_code"> selectors epoll = selectors.EpollSelector() server = socket.socket() server.bind((,8082 server.listen(100 conn,addres = server.accept() data = conn.recv(1024 epoll.unregister(conn) events = epoll.select() key,mask sock = key.fileobj callback = key.data callback(sock) 04客户端 测试服务端。<div class="cnblogs_code"> client = client.connect((,8082 data = input( recv_data = client.recv(1024 (recv_data.decode()) (编辑:莱芜站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 有没有办法在python中的特定索引附加/扩展列表与另一个列表
- python – Django REST Framework中的camelCase POST数据
- 【Python】Python-numpy逻辑报错:The truth value of an a
- python – 如何在seaborn的facetgrid中设置可读的xticks?
- 【Python】logging.DEBUG级别没有输出
- python – 如何使用SQLAlchemy映射一个类与多个表?
- 在Django中使用python-social-auth和电子邮件注册复制电子邮
- python – 如何在django的每个视图中运行一段代码?
- python – Pandas读取sql整数变为浮点数
- pyDes 实现 Python 版的 DES 对称加密/解密--转