1. 下面的例子,客户端给服务端发送消息,服务端把消息返回

server

#!/usr/bin/env python

import selectors
import socket
import time
import threading sel = selectors.DefaultSelector() def echo(conn,cmd,filename):
time.sleep(3)
conn.send((cmd + ' ' + filename).encode()) def accept_client(sock,mask):
conn,addr = sock.accept()
print('conn:{},addr:{},mask:{}'.format(conn,addr,mask))
# conn.setblocking(False)
sel.register(conn, selectors.EVENT_READ, read_client) def read_client(conn,mask):
data = conn.recv(1024).decode().strip()
if data:
if len(data.split(' ')) == 2:
cmd = data.split(' ')[0]
filename = data.split(' ')[1]
t = threading.Thread(target=echo,args=(conn,cmd,filename)) #这里使用了线程,不然程序会变成串行的,执行一个客户端任务,sleep(3)然后再执行下一个客户端任务...
t.start()
# time.sleep(1)
# conn.send((cmd + ' ' + filename).encode())
else:
conn.send(('usage: put filename ;get filename').encode())
else:
print('{} closed'.format(conn))
sel.unregister(conn)
conn.close()
server = socket.socket()
server.bind(('localhost',1235))
server.listen(12340)
# server.setblocking(False)
sel.register(server, selectors.EVENT_READ,accept_client) while True:
events = sel.select()
for key,mask in events:
callable = key.data
callable(key.fileobj,mask)

client

#!/usr/bin/env python

import socket
import threading
import time ip_port = ('localhost',1235)
socks = [socket.socket() for i in range(1000)] m = b'get abc'
time_list = []
def run(s):
s.connect(ip_port)
s.send(m)
data = s.recv(1024)
print(s,data) start_time = time.time()
for s in socks:
t = threading.Thread(target=run,args=(s,))
t.start()
time_list.append(t)
for i in time_list:
i.join()
print('time:{}'.format(start_time - time.time()))

2. 实现并发put和get文件

selectors实现高并发的更多相关文章

  1. Java高并发程序设计学习笔记(十一):Jetty分析

    转自:https://blog.csdn.net/dataiyangu/article/details/87894253 new Server()初始化线程池QueuedThreadPoolexecu ...

  2. [ 高并发]Java高并发编程系列第二篇--线程同步

    高并发,听起来高大上的一个词汇,在身处于互联网潮的社会大趋势下,高并发赋予了更多的传奇色彩.首先,我们可以看到很多招聘中,会提到有高并发项目者优先.高并发,意味着,你的前雇主,有很大的业务层面的需求, ...

  3. 如何在高并发分布式系统中生成全局唯一Id

    月整理出来,有兴趣的园友可以关注下我的博客. 分享原由,最近公司用到,并且在找最合适的方案,希望大家多参与讨论和提出新方案.我和我的小伙伴们也讨论了这个主题,我受益匪浅啊…… 博文示例: 1.     ...

  4. 协程--gevent模块(单线程高并发)

    先恶补一下知识点,上节回顾 上下文切换:当CPU从执行一个线程切换到执行另外一个线程的时候,它需要先存储当前线程的本地的数据,程序指针等,然后载入另一个线程的本地数据,程序指针等,最后才开始执行.这种 ...

  5. mysql高并发和表类型

    高并发:http://www.cnblogs.com/wangchaozhi/p/5061378.html 表类型:http://www.xiaoxiaozi.com/2009/07/14/1171/

  6. 分布式大数据高并发的web开发框架

    一.引言 通常我们认为静态网页html的网站速度是最快的,但是自从有了动态网页之后,很多交互数据都从数据库查询而来,数据也是经常变化的,除了一些新闻资讯类的网站,使用html静态化来提高访问速度是不太 ...

  7. PHP uniqid 高并发生成不重复唯一ID

    http://www.51-n.com/t-4264-1-1.html PHP uniqid()函数可用于生成不重复的唯一标识符,该函数基于微秒级当前时间戳.在高并发或者间隔时长极短(如循环代码)的情 ...

  8. 【实战Java高并发程序设计 7】让线程之间互相帮助--SynchronousQueue的实现

    [实战Java高并发程序设计 1]Java中的指针:Unsafe类 [实战Java高并发程序设计 2]无锁的对象引用:AtomicReference [实战Java高并发程序设计 3]带有时间戳的对象 ...

  9. 【实战Java高并发程序设计6】挑战无锁算法:无锁的Vector实现

    [实战Java高并发程序设计 1]Java中的指针:Unsafe类 [实战Java高并发程序设计 2]无锁的对象引用:AtomicReference [实战Java高并发程序设计 3]带有时间戳的对象 ...

随机推荐

  1. DOM中元素节点、属性节点、文本节点

    DOM中有12中节点,但最常用到的是元素节点,属性节点,文本节点. 元素节点的节点类型(nodeType)是1: 属性节点的节点类型(nodeType)是2: 文本节点的节点类型(nodeType)是 ...

  2. 笔记2:傻瓜式盗QQ程序

    1.一个简单的盗QQ号的方法 仿做一个QQ的窗体 PS:当然里面有用的控件只有两个输入框和一个登陆按钮,其他的尽量做得像一些吧! 点登陆时的后台代码: PS:需要导入两个包:using System. ...

  3. Linux基础: 一切都是文件

    ​ 一切都是文件 创建系统配置交换分区(用作虚拟内存)加上单根树 file 文件名 查看文件类型 uname 查看系统版本 bin binary二进制文件 所有用户可用 系统可执行命令的二进制文件(c ...

  4. hdu-----(4514)湫湫系列故事——设计风景线(树形DP+并查集)

    湫湫系列故事——设计风景线 Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)Tot ...

  5. Xcode8 及iOS10适配问题汇总

    上点干货,目前得知的一些bug解决汇总:iOS10相册相机闪退bughttp://www.jianshu.com/p/5085430b029fiOS 10 因苹果健康导致闪退 crashhttp:// ...

  6. Eclipse 反编译器

    Help-->Install New SoftWare 贴上反编译地址:http://opensource.cpupk.com/decompiler/update/ 选择add,一路向北,起飞.

  7. JDE处理选项

    处理选项为JDE的一种数据结构,命名方式如下: The name of a data structure can be a maximum of characters-only if you begi ...

  8. PDF 补丁丁 0.4.1 版将增加嵌入中文字库的功能

    有不少用户反映,部分老 PDF 文件由于在制作时没有嵌入字库,导致该文件在某些阅读器上显示为乱码.即使他们用 Acrobat 嵌入了相应的字库,文件仍然无法正确显示. 这些老 PDF 看起来具有如下相 ...

  9. Windows server2003 + sql server2005 集群配置安装

    http://blog.itpub.net/29500582/viewspace-1249319/

  10. 配置coffeeScript

    1.安装好node.js后 在系统环境变量自动会设置好: 我安装在D:\Program Files文件夹中   也安装好了npm(node packges manager)   2.系统会自动配置np ...