做Python的人,一定知道两个性能优秀的异步网络框架:tornado,和twisted。

那么,这两个著名的框架,又有什么异同呢?tornado和twisted,我都用在几个游戏项目中,做过后端,觉得它俩其实大同小异。今天花一些时间,来分析它们之间的异同。如果有误,请大家指正:

对比结果:

tornado 和 twisted,作为异步框架,是大同小异的。只不过tornado 轻量级一些,twisted 重量级一些。在其他方面,也是互有长短。经过实测,发现这两个框架,I/O性能差不多,对计算资源的占用相差较多!  如果追求整体性能的话,推荐使用twisted。

注意,这里的“高”和“低”只是它俩之间的对比。

测试说明:

都在一台linux机器上,同时接收5W个TCP数据包(包含一些游戏数据),进行解析处理。为了保证测试准确性,算法一致(甚至变量都完全一致)。

tornado 的运行情况:

twisted 的运行情况:

Tornado:完成这5W个包的处理,会快一点点。完成时间在32秒左右。但是CPU占用达到45%。

Twisted:完成这5W个包的处理,相对就慢一些。完成时间在34秒左右。CPU占用低一些,为32%。

单独测试收发包:

Tornado:每秒可完成14000次收发包(包大小101字节),CPU的一个核心跑满。

Twisted :每秒可完成89000次(在另一台I5的本地机器上测,是10万次)收发包(包大小101字节)。CPU的一个核心跑满。

附注,测试使用的版本为:【tornado 3.2.0】,【 twisted 13.2.0】

对比Tornado和Twisted相关推荐

  1. python异步框架twisted_对比Tornado和Twisted两种异步Python框架

    做Python的人,一定知道两个性能优秀的异步网络框架:tornado,和twisted. 那么,这两个著名的框架,又有什么异同呢?tornado和twisted,我都用在几个游戏项目中,做过后端,觉 ...

  2. Python3 --- Tornado简介

    一.Tornado简介 Tornado全称Tornado Web Server,是一个用Python语言写成的Web服务器兼Web应用框架,由FriendFeed公司在自己的网站FriendFeed中 ...

  3. Twisted 入门 教程

    GitHub 地址:https://github.com/likebeta/twisted-intro-cn/tree/master/zh             https://github.com ...

  4. 5.(基础)tornado异步

    终于到了传说中的异步了,感觉异步这个名字听起来就很酷酷的,以前还不是多擅长Python时,就跑去看twisted的源码,结果给我幼小的心灵留下了创伤.反正包括我在内,都知道异步编程很强大,但是却很少在 ...

  5. [翻译]深入理解Tornado——一个异步web服务器

    本人的第一次翻译,转载请注明出处:http://www.cnblogs.com/yiwenshengmei/archive/2011/06/08/understanding_tornado.html ...

  6. tornado 简易教程

    引言 回想Django的部署方式 以Django为代表的python web应用部署时采用wsgi协议与服务器对接(被服务器托管),而这类服务器通常都是基于多线程的,也就是说每一个网络请求服务器都会有 ...

  7. 异步爬虫-aiohttp库、Twisted库简介

    为什么要用异步爬虫?  爬虫本质上就是模拟客户端与服务端的通讯过程.以浏览器端的爬虫为例,我们在爬取不同网页过程中,需要根据url构建很多HTTP请求去爬取,而如果以单个线程为参考对象,平常我们所采取 ...

  8. Tornado是为何物

    引言 回想Django的部署方式 以Django为代表的python web应用部署时采用wsgi协议与服务器对接(被服务器托管),而这类服务器通常都是基于多线程的,也就是说每一个网络请求服务器都会有 ...

  9. 深入理解异步Web服务器 Tornado

    这篇文章的目的在于对Tornado这个异步服务器软件的底层进行一番探索.我采用自底向上的方式进行介绍,从轮训开始,向上一直到应用层,指出我认为有趣的部分. 所以,如果你有打算要阅读Tornado这个w ...

最新文章

  1. Java获取Mybatis动态生成的sql
  2. 有监督回归:最小二乘学习法
  3. 【BZOJ1070】【codevs2436】修车,费用流
  4. javaee安装_JDK下载安装与环境变量配置【超详细】
  5. java抛出异常齁_解決 Elasticsearch 使用 Java High Level REST Client 時出現 NoClassDefFoundError 錯誤...
  6. vue中将汉字按照首字母排序,也适用于其他地方,但不适用多音字
  7. html js 禁用浏览器上下滑动,原生javascript实现禁止浏览器滚动,滚动条不消失代码...
  8. 关于空间分析的一点小思考
  9. C++箴言:多态基类中将析构函数声明为虚拟zz
  10. 读写Word的组件DocX介绍与入门
  11. 学会这一招,轻松将PDF转网页HTML,快来码住
  12. 基于stm32单片机语音LD3320控制直流电机智能座椅LCD1602显示人体重量薄膜压力传感器设计
  13. 【Java】【MySnake】仿贪吃蛇小游戏开源代码(持续更新)
  14. python制作简单网页_用python制作简单网页
  15. 大疆精灵4RTK连接千寻位置FindM Pro、FindCM
  16. mysql navicat导入sql文件 报错 [Err] 1046 - No database selected
  17. 三个小孩去饭店点菜用计算机算钱,去饭店别点这三个菜!点菜“潜规则”你该知道(组图)...
  18. 使用TimerOne库
  19. python多个箱线图_箱线图Python
  20. web一阶段 day27

热门文章

  1. Question2Answer的统计添加
  2. Three.js使用WebWorker进行八叉树碰撞检测
  3. 第四章:搭建Windows server AD域和树域
  4. C 库函数 - fread()详解
  5. View绘制之ScrollBar绘制
  6. linux内核 recvfrom,Linux系统调用-- recv/recvfrom 函数详解
  7. SQL学习四、过滤、数据筛选
  8. Android-Studio Gradle Build Flavor 使用小结
  9. AutoLisp从入门到放弃(一)
  10. 第十五章 数据访问部件的应用及编程(一)