软件开发的概念。Python编程语言内部二进制代码放大镜
私信小编007即可自动获取大量Python视频教程以及各类PDF!用Python做到每秒处理上百万次HTTP请求,可能吗?也许不能,但直到最近,这已成为现实。很多公司都在为了提升程序的执行性能和降低服务器的运营成本,而放弃Python去选择其它编程语言,其实这样做并不是必须,因为Python完全可以胜任这些任务。Python社区最近做了大量关于性能的优化。
Python的微框架(蓝色)、NodeJS和Go(绿色)和Japronto(紫色)勘误表:如果谨慎点用Go的stdlibHTTP服务器可以写出比上图的Go快12%的代码。另外fasthttp也是一个非常棒的Go服务器,同样的测试中它的性能几乎只比Japronto低18%。真是太棒了!更多细节查可以看https://link.zhihu.com/?
我们可以看到其实MeinheldWSGI服务器已经和NodeJS和Go的性能差不多了。尽管它用的是阻塞式设计,但还是要比前面那四个要快的多,前面四个用的是异步的Python解决方案。所以,不要轻易相信别人那些关于异步系统总是比同步系统更快的说法,虽然都是并发处理的问题,但事实远不如想象的那么简单。
HTTP流水线(图片来自Wikipedia)HTTP流水线在这里起着决定性的因素,因为Japronto用它来做执行并发请求的优化。大多数服务器把来自客户端的流水线和非流水线请求都一视同仁,用同样的方法处理,并没有做针对性的优化。
经过优化Japronto拿到了1,214,440RPS的成绩除了利用客户端流水线请求,和优化调用,还有一些其它可用的技术。Japronto几乎都是用C写的。包含解析器、协议、链接管理、路由、请求、应答等对象都是用C扩展写的。Japronto力图做到Python的懒加载,比如,协议头的字典只有在被试图请求到时才会被创建,另外一系列的对象也只有在第一次使用时才会被创建。
领取专属 10元无门槛券
私享最新 技术干货