博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
selecter模块默认使用epoll 实现IO多路复用,展示单线程的并发效果
阅读量:6959 次
发布时间:2019-06-27

本文共 855 字,大约阅读时间需要 2 分钟。

import selectorsimport socket sel = selectors.DefaultSelector() def accept(sock, mask):    conn, addr = sock.accept()  # Should be ready    print('accepted', conn, 'from', addr)    conn.setblocking(False)    sel.register(conn, selectors.EVENT_READ, read) def read(conn, mask):    data = conn.recv(1000)  # Should be ready    if data:        print('echoing', repr(data), 'to', conn)        conn.send(data)  # Hope it won't block    else:        print('closing', conn)        sel.unregister(conn)        conn.close() sock = socket.socket()sock.bind(('localhost', 10000))sock.listen(100)sock.setblocking(False)sel.register(sock, selectors.EVENT_READ, accept) while True:    events = sel.select()    for key, mask in events:        callback = key.data        callback(key.fileobj, mask)
selecter默认使用epool

 

转载于:https://www.cnblogs.com/zhangmingda/p/9419148.html

你可能感兴趣的文章
用数据分析赢得卓越业务
查看>>
java直接执行jar包
查看>>
Java中的正则表达式
查看>>
Database Visualization using Metabase Part 1 - Install Metabase on Ubuntu 16.04
查看>>
区块链应用 | 2018年,区块链将有这五大新发展
查看>>
【深度荐读】人脑产生意识,可能是因为量子纠缠
查看>>
亚信安全:2017年勒索软件与商业邮件欺骗将继续蔓延
查看>>
每个.NET 开发人员应该下载的十个必备工具
查看>>
为WPF程序中的数据(Model)添加编辑功能
查看>>
eclipse开发web应用程序步骤(图解)
查看>>
GitHub上不错的Android开源项目(三)
查看>>
Osmocom-bb系统编译
查看>>
对象的思维
查看>>
spring-注入map集合
查看>>
LoadRunner下设置监控Windows系统资源
查看>>
SQL Server 2012 Managed Service Account
查看>>
c++在运行期间不会自动检查数组是否越界,设计一个类检查数组是否越界
查看>>
Markdown测试
查看>>
PS VR发女朋友了?《夏日课堂》繁体中文版推出实体光盘版
查看>>
mysql M-S 主从配置
查看>>