epoll及总结

2023-11-02

使用方法:基本与poll相同
生成对象改为epoll()
将所有事件类型改为EPOLL类型

epll特点
epoll 效率比select poll要高
epoll监控数量比select 要多
epoll的触发方式比pollduo(EPOLLET边缘触发)
"""
poll_server.py 完成tcp并发服务
Io多路复用实现并发建立fileno --> io对象字典用于io查找
"""
from select import *
from socket import *
s = socket()
s.setsockopt(SOL_SOCKET, SO_REUSEADDR, 1)
s.bind(('0.0.0.0',4444))
s.listen(3)
#创建epoll对象
ep = epoll()
#建立查找字典,通过一个IO的fileno找到io对象
fdmap = {s.fileno():s}
#关注s
ep.register(s,EPOLLIN|EPOLLERR)
#循环监控IO发生
while True:
    fd,events = ep.poll()
    if fd == s.fileno():
        c,addr = fdmap[fd].accept()
        print('coonect from',addr)
        #关注客户端连接套接字
        ep.register(c,EPOLLIN|EPOLLERR)
        fdmap[c.fileno()]=c
    elif events & EPOLLIN:#判断是否为POLLIN就绪
        data=fdmap[fd].recv(1024).decode()
        if not data:
           ep.unregister(fd)#取消关注
           fdmap[fd].close()
           del fdmap[fd]#从字典删除
           continue
        print(data)
        fdmap[fd].send(b'ok')

select,poll默认都是水平触发如果操作系统监听到了io的把要处理的io发给应用层如果应用层不处理就会一直发送直到处理边缘触发相反

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

epoll及总结 的相关文章

随机推荐

  • 【Linux】Linux 生成证书 keytool 命令找不到

    用Openssl生成证书 后来要涉及生成 java keytool 的 jks格式的证书 结果输入keytool bash keytool command not found 结果找了半天才发现javahome都没设置 也是郁闷 希望对遇到
  • Java EnumMap remove()方法具有什么功能呢?

    转自 Java EnumMap remove 方法具有什么功能呢 下文笔者将讲述EnumMap中remove方法的功能简介说明 如下所示 EnumMap类remove 方法的功能 用于删除指定的元素 并返回删除的元素 如果返回null 则代
  • js,jq

    定时器
  • 利用inotify和rsync服务实现数据实时同步

    文件定时同步的实现 利用rsync结合cron计划任务实现 rsync av delete data 10 0 0 12 back a 保留文件属性 v 显示过程 delete 如果源文件没有的 目标文件里面有 就把目标文件里面的删除掉 文
  • Qt Creator设置黑色主题背景

    黑色的主题看起来比较炫酷一点 也有人说黑色主题用起来对眼睛好 不过个人感觉然并卵 根据自己的习惯爱好设置就好 如果想保护眼睛 还是将屏幕调到合适的亮度 不要太暗 自己眼睛觉得舒服最好 也可以通过 桌面右击 个性化 高级 来设置窗口 桌面等的
  • Docker全攻略(二)Docker配置国内免费registry mirror

    一 Docker加速器简介 Docker加速器是 DaoCloud 推出的 Docker Hub Mirror 服务的官方名称 Docker加速器提供Docker Registry Docker Hub 在中国的镜像代理服务 为中国用户在国
  • 能够快速完成任务的方法有几点

    1 思路清晰 在写之前把步骤都想清楚了 2 在代码中 写伪代码 3 熟练使用快捷键 并生成自己的快捷键 4 熟悉各种插件 5 最重要的多敲 每种套路多敲几遍 当用的时候就孰能生巧了
  • 八皇后问题(Java代码实现)

    什么是八皇后问题 八皇后问题 是一个古老而著名的问题 是回溯算法的典型案例 该问题是国际西洋棋棋手马克斯 贝瑟尔于1848年提出 在8 8格的国际象棋上摆放八个皇后 使其不能互相攻击 即 任意两个皇后都不能处于同一行 同一列或同一斜线上 问
  • 东北大学暑期acm夏令营 算法进阶第八天(图论专题)

    部分内容参考 点我 第一题 include
  • 《机器人学中的状态估计》学习笔记

    第一章 引言 机器人的状态 是指一组完整描述它随时间运动的物理量 比如位置 角度 速度等 状态估计简史 早在4000年前 航海家们就面临着一个状态估计问题 如何判断船只在大海中的位置 状态估计理论的起源 亦可追溯至早期的天文学 估计理论的里
  • C++ Deque(双端队列)

    什么Deque 双端队列表示双端队列 它概括了队列数据结构 即可以从前端或后端的两端进行插入和删除 Deque和vector区别 vector对于头部的插入和删除效率低 数据量越大 效率越低 deque相对而言 对头部的插入删除速度比vec
  • windows 杀掉进程 端口

    2 查找所有运行的端口 输入命令 netstat ano 该命令列出所有端口的使用情况 在列表中我们观察被占用的端口 比如是 1224 首先找到它 3 查看被占用端口对应的 PID 输入命令 netstat aon findstr 8081
  • 医学检验专业职业生涯

    1 医院检验科或血液科 检验科之间的收入差距比较大 越大医院的检验科在整个医院中地位越高 优点是大三甲医院待遇高平台好工作环境比较好 缺点是工作强度相对大 高学历人才集中所以晋升机会小 大多数人都是平平凡凡工作一辈子 工资加奖金10k 15
  • Vicuna模型权重合成及模型部署

    第一式 Vicuna模型部署 1 环境搭建 1 1 构建虚拟环境 1 2 安装FastChat 1 2 1 利用pip直接安装 1 2 2 从github下载repository然后安装 2 Vicuna Weights合成 2 1 下载v
  • mmdetection【2.3.0】RuntimeError: Error compiling objects for extension

    解决方案 vim bashrc 添加export CUDA HOME usr local cuda 10 0 source bashrc 错误 No module named mmcv ext 解决方案 pip uninstall mmcv
  • centos7安装mongodb3.4、卸载(彻底卸载)、更改root密码(最完整、最小白的教程)

    本教程通过yum安装 环境为centos7 先升级下curl yum update curl y 否则会在安装过程中报错 升级下又不会怀孕 一 创建yum文件 vi etc yum repos d mongodb org 3 4 repo
  • Python之Numpy学习(4)

    使用数组进行文件输入和输出 主要介绍三个文件文件操作函数 numpy save numpy savez 和numpy save numpy save file arr 存储的文件是以 npy为后缀 通过notepad无法打开 与该函数对应的
  • Ansible自动化运维工具之playbook剧本编写含lnmp

    1 playbook的相关知识 1 1 playbook 的简介 playbook是 一个不同于使用Ansible命令行执行方式的模式 其功能更强大灵活 简单来说 playbook是一个非常简单的配置管理和多主机部署系统 不同于任何已经存在
  • GAN与CycleGAN的结构解析

    原文链接 当下神经网络三大主流子领域 CNN RNN和GAN 今天咱们主要分享一下生成对抗网络 GAN的一些核心思想 并以CycleGAN为例进行阐述 借自 https github com eriklindernoren Keras GA
  • epoll及总结

    使用方法 基本与poll相同 生成对象改为epoll 将所有事件类型改为EPOLL类型 epll特点 epoll 效率比select poll要高 epoll监控数量比select 要多 epoll的触发方式比pollduo EPOLLET