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相关推荐

  1. python select模块_Python之select模块解析

    首先列一下,sellect.poll.epoll三者的区别 select select最早于1983年出现在4.2BSD中,它通过一个select()系统调用来监视多个文件描述符的数组,当select ...

  2. python select實現非阻塞socket

    python select實現非阻塞socket - liukeforever的专栏 - 博客频道 - CSDN.NET python select實現非阻塞socket 分类: Python 201 ...

  3. python:select interpreter resulted in an error python.setINterpreter not found

    python 插件已安装 在某个位置的python文件右键用vscode打开后,按ctrl+shift+p,点击python:select interpreter后弹出错误:"python: ...

  4. vscode如何添加本地python解释器、解析器 Interpreter?(Python: Select Interpreter)

    先安装python扩展 然后点ctrl+shift+p搜索python:select,选择解析器(或者也可以直接点左下方的) 然后360报毒了,允许通过,然后选择你想要的解释器 然后就好了

  5. command python: select interpreter resulted in error解决方法

    第一条报错 import "numpy" could not be resolved (pylance report missing imports) 查找到其解决方法是在vsco ...

  6. python select模块安装_python+selenium select下拉选择框定位处理方法

    一.前言 总结一下python+selenium select下拉选择框定位处理的两种方式,以备后续使用时查询: 二.直接定位(XPath) 使用Firebug找到需要定位到的元素,直接右键复制XPa ...

  7. python中select模块_基于python select.select模块通信的实例讲解 如何用python写个串口通信的程序...

    python socket怎么利用select实现双工通信 方法: Before : 0000000000000000000000000000000000000000 After pack: 0100 ...

  8. python select模块_深入理解python中的select模块

    简介 Python中的select模块专注于I/O多路复用,提供了select  poll  epoll三个方法(其中后两个在Linux中可用,windows仅支持select),另外也提供了kque ...

  9. Python select解析

    一.首先列一下,sellect.poll.epoll三者的区别 1.select a.select最早于1983年出现在4.2BSD中,它通过一个select()系统调用来监控多个文件描述符的数组,当 ...

最新文章

  1. KVM NAT模式 恢复virbr0
  2. 多进程减少多个文件的内存占用
  3. Gentoo - ssh-agent配置
  4. mysql建立索引 有什么缺陷_MySQL数据库建立索引的优缺点以及什么样的字段适合建立索引...
  5. HowToDoInJava 其它教程 2 · 翻译完毕
  6. 谷歌将推出新版Pixel 4a 5G:搭载骁龙765G处理器 售价下降至3200元
  7. STM32F103输出互补PWM波
  8. 修改jceks.key.serialFilter解决KMS重启后Can‘t recover key for testkey from keystore file
  9. n平方的求和公式_极限求解--数列前n项和公式推导(补充知识)
  10. 米尔顿-艾瑞克森的催眠引导词
  11. micropython入门指南pdf_一文了解MicroPython
  12. 黑马vue实战项目-(一)项目初始化登录功能开发
  13. 税务计算机类考试题型,2020年税务师考试题型、计算器使用规定及考试难度
  14. UE4 WebBrowser插件清除浏览器缓存
  15. 情人节程序员用HTML网页表白【粉色烂漫的七夕情人节专题页面】 HTML5七夕情人节表白网页源码 HTML+CSS+JavaScript
  16. 2.2、项目管理知识体系构成
  17. Python Day4 循环关键字和练习【零基础】
  18. wegame导致win10无限重启问题解决
  19. 欧菲光净利暴跌,提醒了中国制造,原来苹果如此重要
  20. Hype教程:设置字体样式

热门文章

  1. ARM处理器基本指令大全
  2. Python之数据分析(动画效果、animation模块、气泡动画)
  3. Spire.Doc for Java的jar包、maven库-全套free资源
  4. Python中真的是能使用元组的地方尽量不使用列表吗?
  5. 机器学习没有捷径,根据机器学习算法地图学习是最有效的一种方式!
  6. Python实现局域网内屏幕广播的技术要点分析
  7. awk -f 分隔符 命令_Linux awk命令详解(详解版)
  8. php数据库显示+ajax,如何使用PHP和AJAX显示MySQL数据库
  9. 计算机网络技术人员介绍,计算机网络技术专业介绍2021 计算机网络技术专业就业方向及前景...
  10. mysql 数据结构语句_SQL 数据结构操作语句