使用eventlet之后反而性能更差的一组测试例子,求解为什么是这样?
刚刚了解到这个类库,据说是个并发网络场景下非常高性能的模块
我自己写了个代码做了个测试,反而比直接使用多threading SocketServer模块更慢,是我用的有问题吗?求高手指教
我做了4组测试,分别是服务端使用/不使用eventlet 客户端使用/不使用eventlet的组合测试,结果是都不使用eventlet的一组情况最好,还请各位指教~
服务端代码
#import eventlet #eventlet.monkey_patch() #from eventlet.green import SocketServer from SocketServer import TCPServer,StreamRequestHandler,ThreadingMixIn,UnixStreamServer,BaseServer import os class myserver(ThreadingMixIn, TCPServer): #class myserver(ThreadingMixIn, UnixStreamServer): request_queue_size = 8192 allow_reuse_address = True def _remove_socket(self): pass try: os.remove(self.server_address) except OSError: pass def server_bind(self): #self._remove_socket() TCPServer.server_bind(self) def shutdown(self): TCPServer.shutdown(self) self.server_close() self._remove_socket() class requesthandler(StreamRequestHandler): def handle(self): req = '' while True: chunk = self.rfile.readline() if not chunk: break req += chunk if chunk == '\r\n': break data = 'Hello World\r\n' self.wfile.write('HTTP/1.1 200 OK\r\nContent-Length: %d\r\n\r\n%s'%(len(data),data)) def main(): #addr = './123.sock' addr = ('127.0.0.1', 81) try: server = myserver(addr,requesthandler) print server server.serve_forever(0.1) except KeyboardInterrupt: server.shutdown() main()
客户端代码
#import eventlet #eventlet.monkey_patch() import threading import blist,socket jobs = blist.blist([]) def a(): for i in xrange(100): s = socket.socket() s.connect(('127.0.0.1',81)) #s = socket.socket(socket.AF_UNIX) #s.connect('./123.sock') s.sendall('\r\n') data = '' ret = s.recv(1) while True: if ret: data += ret ret = s.recv(1) else: s.close() break cc = 300 for i in xrange(cc): jobs.append(threading.Thread(target = a)) for i in xrange(cc): jobs[i].start() for i in xrange(cc): jobs[i].join()
玩蛇网文章,转载请注明出处和文章网址:https://www.iplaypy.com/wenda/wd20300.html
相关文章 Recommend
- • 使用django在做添加superuser操作时报错\xBA\xA3像是乱
- • 一段代码中使用了sqlite有部分不理解的地方,求老
- • 不小心删除了pythonwin,重装之后提示不是有效的
- • 使用python的类报错TypeError: say() takes exactly 2 argu
- • 关于在android平台使用Python代码的小问题
- • python web框架webpy urls对应表在修改之后不会立即生
- • sublime text 2怎样使用virtualenv环境进行build
- • MAC下使用easy_install MySQL-python报错No such file or di
- • 请问python外部模块可以在Jinja2模板里使用吗?
- • 求可以直接使用的支付宝python包,全安性高的
- • 使用pymedia播放音频大家有遇到噪音问题吗?怎么解
- • python soap client 错误: suds.TypeNotFound: Type not f
您现在的位置: 玩蛇网首页 > Python问题解答 > 正文内容
我要分享到:
必知PYTHON教程 Must Know PYTHON Tutorials
- • python 解释器
- • python idle
- • python dir函数
- • python 数据类型
- • python type函数
- • python 字符串
- • python 整型数字
- • python 列表
- • python 元组
- • python 字典
- • python 集合
- • python 变量
- • python print
- • python 函数
- • python 类定义
- • python import
- • python help
- • python open
- • python 异常处理
- • python 注释
- • python continue
- • python pass
- • python return
- • python global
- • python assert
- • python if语句
- • python break
- • python for循环
- • python while循环
- • python else/elif
- • lambda匿名函数
必知PYTHON模块 Must Know PYTHON Modules
- • os 模块
- • sys 模块
- • re 正则表达式
- • time 日期时间
- • pickle 持久化
- • random 随机
- • csv 模块
- • logging 日志
- • socket网络通信
- • json模块
- • urlparse 解析URL
- • urllib 模块
- • urllib2 模块
- • robotparser 解析
- • Cookie 模块
- • smtplib 邮件
- • Base64 编码
- • xmlrpclib客户端
- • string 文本
- • Queue 线程安全
- • math数学计算
- • linecache缓存
- • threading多线程
- • sqlite3数据库
- • gzip压缩解压
最新内容 NEWS
- • django app提供pv信息的方法是什么
- • Django项目版本升级如何操作?
- • django较多数据传递如何优雅的呈现
- • django1.7获取参数问题求助
- • Django1.7使用内置comment遇到问题
- • python mysql数据库做insert操作时报_mysql_ex
- • 关于python mysql的duplicate insert机制的疑问
- • pymongo使用insert函数批量插入被中断要怎么
- • Python程序员解决棘手问题的常用库
- • 求助关于restfull api接口几个问题
图文精华 RECOMMEND
-
django1.7获取参数问题求助
-
Python程序员解决棘手问题的常用库
-
求问str()同__str__原理上有什么不同
-
scrapy框架里面用link extractor怎么能
-
python {}.fromkeys创建字典append添加操
-
python3 类型Type str doesn't support th
热点文章 HOT
- 学习Python有什么好的书籍推荐?
- Python匿名函数 Lambda表达式作用
- Python与Java、C、Ruby、PHP等编程语言有什么
- Python 正则中文网页字符串提取问题
- 如何为实时性应用存取经纬度?django my
- 想用python做个客户端,在二维码登录这个地
- 有让IDE可识别Python函数参数类型的方法吗
- Python字符串转换成列表正则疑问