python select
select作用:
1.监听哪些文件描述符(最多监听1024个fd)的哪些事件
(每次调用select,都会会所有的socket进行一次线性扫描)
2.内核监听到数据后,不告诉是哪个连接有数据,用户只能通过轮询的方式来获取数据
(如:监视10个socket,当有1个连接有数据后,内核就通知用户10个socket中有数据了)
select过程:
1.将fd从用户空间复制到内核空间
2.遍历所有fd,查看对应事件是否发生
3.发生:将唤醒,未发生将阻塞
4.返回遍历后的fd
5.将fd从内核空间赋值到用户空间
fd_r_list, fd_w_list, fd_e_list = select.select(rlist, wlist, xlist, [timeout])
参数 | 描述 |
---|---|
rlist | 满足可读条件,获取发生变化的fd,并添加到fd_r_list |
wlist | |
xlist | 满足发生错误时,将发生错误的fd添加到fd_e_list |
timeout | 为空,select会一直阻塞,直到监听的fd发生变化.如果设置为n,则过n秒,且没有检测到变化,则返回三个空列表 |
服务端
import socket
import selectserver1 = socket.socket()
server1.bind(('0.0.0.0', 8001))
server1.listen()server2 = socket.socket()
server2.bind(('0.0.0.0', 8002))
server2.listen()inputs = [server1, server2, ]while True:r_list, w_list, e_list = select.select(inputs,[],[],1)print(f'r_list:{r_list}')for ser in r_list:conn, address = ser.accept()conn.send('您好'.encode())conn.close()
客户端
import socketclient = socket.socket()
client.connect(('127.0.0.1', 8001))
print(client.recv(1024).decode())
参考:
https://www.jb51.net/article/111899.htm
https://www.jianshu.com/p/e26594304e11
python select相关推荐
- python select模块_Python之select模块解析
首先列一下,sellect.poll.epoll三者的区别 select select最早于1983年出现在4.2BSD中,它通过一个select()系统调用来监视多个文件描述符的数组,当select ...
- python select實現非阻塞socket
python select實現非阻塞socket - liukeforever的专栏 - 博客频道 - CSDN.NET python select實現非阻塞socket 分类: Python 201 ...
- python:select interpreter resulted in an error python.setINterpreter not found
python 插件已安装 在某个位置的python文件右键用vscode打开后,按ctrl+shift+p,点击python:select interpreter后弹出错误:"python: ...
- vscode如何添加本地python解释器、解析器 Interpreter?(Python: Select Interpreter)
先安装python扩展 然后点ctrl+shift+p搜索python:select,选择解析器(或者也可以直接点左下方的) 然后360报毒了,允许通过,然后选择你想要的解释器 然后就好了
- command python: select interpreter resulted in error解决方法
第一条报错 import "numpy" could not be resolved (pylance report missing imports) 查找到其解决方法是在vsco ...
- python select模块安装_python+selenium select下拉选择框定位处理方法
一.前言 总结一下python+selenium select下拉选择框定位处理的两种方式,以备后续使用时查询: 二.直接定位(XPath) 使用Firebug找到需要定位到的元素,直接右键复制XPa ...
- python中select模块_基于python select.select模块通信的实例讲解 如何用python写个串口通信的程序...
python socket怎么利用select实现双工通信 方法: Before : 0000000000000000000000000000000000000000 After pack: 0100 ...
- python select模块_深入理解python中的select模块
简介 Python中的select模块专注于I/O多路复用,提供了select poll epoll三个方法(其中后两个在Linux中可用,windows仅支持select),另外也提供了kque ...
- Python select解析
一.首先列一下,sellect.poll.epoll三者的区别 1.select a.select最早于1983年出现在4.2BSD中,它通过一个select()系统调用来监控多个文件描述符的数组,当 ...
最新文章
- KVM NAT模式 恢复virbr0
- 多进程减少多个文件的内存占用
- Gentoo - ssh-agent配置
- mysql建立索引 有什么缺陷_MySQL数据库建立索引的优缺点以及什么样的字段适合建立索引...
- HowToDoInJava 其它教程 2 · 翻译完毕
- 谷歌将推出新版Pixel 4a 5G:搭载骁龙765G处理器 售价下降至3200元
- STM32F103输出互补PWM波
- 修改jceks.key.serialFilter解决KMS重启后Can‘t recover key for testkey from keystore file
- n平方的求和公式_极限求解--数列前n项和公式推导(补充知识)
- 米尔顿-艾瑞克森的催眠引导词
- micropython入门指南pdf_一文了解MicroPython
- 黑马vue实战项目-(一)项目初始化登录功能开发
- 税务计算机类考试题型,2020年税务师考试题型、计算器使用规定及考试难度
- UE4 WebBrowser插件清除浏览器缓存
- 情人节程序员用HTML网页表白【粉色烂漫的七夕情人节专题页面】 HTML5七夕情人节表白网页源码 HTML+CSS+JavaScript
- 2.2、项目管理知识体系构成
- Python Day4 循环关键字和练习【零基础】
- wegame导致win10无限重启问题解决
- 欧菲光净利暴跌,提醒了中国制造,原来苹果如此重要
- Hype教程:设置字体样式
热门文章
- ARM处理器基本指令大全
- Python之数据分析(动画效果、animation模块、气泡动画)
- Spire.Doc for Java的jar包、maven库-全套free资源
- Python中真的是能使用元组的地方尽量不使用列表吗?
- 机器学习没有捷径,根据机器学习算法地图学习是最有效的一种方式!
- Python实现局域网内屏幕广播的技术要点分析
- awk -f 分隔符 命令_Linux awk命令详解(详解版)
- php数据库显示+ajax,如何使用PHP和AJAX显示MySQL数据库
- 计算机网络技术人员介绍,计算机网络技术专业介绍2021 计算机网络技术专业就业方向及前景...
- mysql 数据结构语句_SQL 数据结构操作语句