当前位置: 首页 > news >正文

小荷特卖的网站谁做的h5制作小程序有什么

小荷特卖的网站谁做的,h5制作小程序有什么,网站建设a2345,搭积木建网站软件引言 python语言一直以开发效率高著称#xff0c;被广泛地应用于自动化领域#xff1a; 测试自动化运维自动化构建发布自动化 但是因为其也具有如下两个特征#xff1a; 解释型语言GIL全局解释器锁 前者导致其性能天然就被编译型语言在性能上落后了许多。而后者则在多核…引言 python语言一直以开发效率高著称被广泛地应用于自动化领域 测试自动化运维自动化构建发布自动化 但是因为其也具有如下两个特征 解释型语言GIL全局解释器锁 前者导致其性能天然就被编译型语言在性能上落后了许多。而后者则在多核并行计算时代极大的限制了python的应用场景。 但是通过合理的web框架则可以使用python扬长避短仍然能够在多核并行时代须保持其高效开发的生产力同时在性能上也有出色表现。例如tornado框架。 tornado框架主要做了如下几件事 使用单线程的方式避免线程切换的性能开销同时避免在使用一些函数接口时出现线程不安全的情况支持异步非阻塞网络IO模型避免主进程阻塞等待 如果你想学习自动化测试我这边给你推荐一套视频这个视频可以说是B站播放全网第一的自动化测试教程同时在线人数到达1000人并且还有笔记可以领取及各路大神技术交流798478386    【已更新】B站讲的最详细的Python接口自动化测试实战教程全集实战最新版_哔哩哔哩_bilibili【已更新】B站讲的最详细的Python接口自动化测试实战教程全集实战最新版共计200条视频包括1、接口自动化之为什么要做接口自动化、2、接口自动化之request全局观、3、接口自动化之接口实战等UP主更多精彩视频请关注UP账号。https://www.bilibili.com/video/BV17p4y1B77x/?spm_id_from333.337vd_source488d25e59e6c5b111f7a1a1a16ecbe9a 前人实验 基于python语言的web框架众多但是主流的有“Django”和“Tornado”基本上可以代表了它们的实现理念。 因为本文的重点是对 同步 和 异步 进行对比。所以关于不同web框架的性能对比实验就引用一位网友的帖子的实验结果吧。 参考的Tornado实现如下 import tornado.ioloop import tornado.webclass MainHandler(tornado.web.RequestHandler):def get(self):self.write(Hello, world)application tornado.web.Application([(r/, MainHandler), ])if __name__ __main__:application.listen(8888)tornado.ioloop.IOLoop.instance().start() 最后使用 Apache Benchmark (ab)在另外一台机器上使用了如下指令进行负载测试 ab -n 100000 -c 25 http://10.0.1.x/ 在 AMD Opteron 2.4GHz 的四核机器上结果如下图所示 相较于第二快的服务器Tornado在数据上的表现也是它的4倍之多。即使只用了一个CPU核的裸跑模式Tornado也有33%的优势。 根据引文作者的观点tornado是完虐其它的web框架的。 本文点评此实验只是暂时让大伙建立一下宏观的对不同的web框架的性能的认识至于可信度是存疑的因为实验报告写得不太规范细节省略太多。本文的观点是如果都是采用同步的的写法tornado和django的性能差异应该没有那么大的。当然这不太重要了后面提到的 同步 和 异步 才是比较重要的。 测试环境 环境 CPU:core i3操作系统Ubuntu 14.0Python框架py2.7Web服务器Tornado 4.2.0服务器只启用一核心 内容 使用同步和异步的方式来写一段延时代码然后再使用 apachebench进行压力测试: 并发量 40总请求量 200 由于本文只是做性能对比而不是性能的上限对比所以都使用的是比较少的压力。 同步和异步代码 class SyncSleepHandler(RequestHandler):同步的方式,一个延时1s的接口def get(self):time.sleep(1)self.write(when i sleep 5s)class SleepHandler(RequestHandler):异步的延时1秒的接口tornado.gen.coroutinedef get(self):yield tornado.gen.Task(tornado.ioloop.IOLoop.instance().add_timeout,time.time() 1)self.write(when i sleep 5s) 同步测试结果 ➜ / ab -n 200 -c 40 http://localhost:8009/demo/syncsleep-handler/ This is ApacheBench, Version 2.3 $Revision: 1528965 $ Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ Licensed to The Apache Software Foundation, http://www.apache.org/Benchmarking localhost (be patient) Completed 100 requests Completed 200 requests Finished 200 requestsServer Software: TornadoServer/4.2.1 Server Hostname: localhost Server Port: 8009Document Path: /demo/syncsleep-handler/ Document Length: 15 bytesConcurrency Level: 40 Time taken for tests: 200.746 seconds Complete requests: 200 Failed requests: 0 Total transferred: 42000 bytes HTML transferred: 3000 bytes Requests per second: 1.00 [#/sec] (mean) Time per request: 40149.159 [ms] (mean) Time per request: 1003.729 [ms] (mean, across all concurrent requests) Transfer rate: 0.20 [Kbytes/sec] receivedConnection Times (ms)min mean[/-sd] median max Connect: 0 0 0.2 0 1 Processing: 1005 36235 18692.2 38133 200745 Waiting: 1005 36234 18692.2 38133 200745 Total: 1006 36235 18692.2 38133 200746Percentage of the requests served within a certain time (ms) 50% 38133 66% 38137 75% 38142 80% 38161 90% 38171 95% 38176 98% 38179 99% 199742 100% 200746 (longest request) 异步测试结果 ➜ / ab -n 200 -c 40 http://localhost:8009/demo/sleep-handler/ This is ApacheBench, Version 2.3 $Revision: 1528965 $ Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ Licensed to The Apache Software Foundation, http://www.apache.org/Benchmarking localhost (be patient) Completed 100 requests Completed 200 requests Finished 200 requestsServer Software: TornadoServer/4.2.1 Server Hostname: localhost Server Port: 8009Document Path: /demo/sleep-handler/ Document Length: 15 bytesConcurrency Level: 40 Time taken for tests: 5.083 seconds Complete requests: 200 Failed requests: 0 Total transferred: 42000 bytes HTML transferred: 3000 bytes Requests per second: 39.35 [#/sec] (mean) Time per request: 1016.611 [ms] (mean) Time per request: 25.415 [ms] (mean, across all concurrent requests) Transfer rate: 8.07 [Kbytes/sec] receivedConnection Times (ms)min mean[/-sd] median max Connect: 0 0 0.4 0 2 Processing: 1001 1010 12.0 1005 1053 Waiting: 1001 1010 12.0 1005 1053 Total: 1001 1010 12.3 1005 1055Percentage of the requests served within a certain time (ms)50% 100566% 100975% 101180% 101590% 103295% 104498% 104599% 1054100% 1055 (longest request) 结果对比 在并发量为40总请求量为200的简单的压力测试里面两种网络IO模型的编程方式的性能对比如下 同步和异步性能对比 性能指标同步阻塞式异步非阻塞式每秒处理请求数Requests per second139请求平均等待时间-msTime per requestmean401491017请求平均处理时间-msTime per requestacross all 100325 测试的结果比较符合被测试程序的理论预期因为被测试程序就功能就是一个1s的延时等待。 显然异步非阻塞式 和性能是远高于 同步阻塞式 的。 在上表中的 同步IO模型 数据里只要是进入了单个请求的处理环节进入到睡眠等待的 内核态 操作时就会将整个进程给 阻塞别的程序就只能进入 等待 状态了这样本质上还是使用的 串行 的处理方式所以 请求平均处理时间 大概是1000ms1秒左右然后完成一个并发度为40的请求平均等待时间为40149ms。 关于上面参数的理解可以进行简单的类比解释。 以如下场景为例子客户去银行处理业务的窗口办理业务。 并行度银行开设的服务窗口数和前台服务员 对应CPU窗口数对应着核心数即真正的实现并行的能力即不是在时间分片后交错进行的 “假象并行” 并发度大厅里面所有服务窗口等待服务的人数 对应着单次的并发度即本次作业需要处理的任务量 总请求量从银行大厅外面陆续过来加入到大厅队伍的客户的累计人数 内核态操作银行业务中必须只能由前台服务员处理的操作 用户态操作客户自己要处理的工作比如准备好自己的身份证到外面复印证件打电话和公司同事确认信息等等。 那么关于 同步 和 异步 的概念类比如下 同步阻塞系统银行 没有 排队叫号系统 客户Web服务器进程 只能 在队伍人群里面傻等轮到自己没有在排队时间干其它事的机会。随着外面的人不断地进入大厅新请求的每个人都要等前面的队伍的全部处理完毕后 40149ms才能等到业务员CPU花1003ms 来处理自己的业务异步非阻塞系统银行 有 排队叫号系统 客户有可以 不用 在拥挤的人群中傻等旁边的休息区打开处理其它事情。客户直接领取叫号单据花掉 5ms 递交准备材料发起内核态操作请求 要么收发邮件要么看下小电影然后等叫号系统叫自己后立刻上去 20ms的时间解决掉问题。客户实际浪费在这上面的时间为 25ms 当然银行业务员CPU还是要花 1000ms 去处理这个任务的 在这个假设的场景里面不管是同步还是异步业务员CPU都是 满负荷 的工作但是却极大的节省了客户web服务器进程 的时间。这样客户自身可以把等待业务员响应的时间都利用起来做一些其它工作这样就极大地提高了整体的工作效率。 众所周知python有GIL,所以多线程其实是伪多线程。tornado于是就单进程只用单线程不做线程切换但是又要实现并行的方式就全部使用异步了。只要是某个请求进入了内核态的耗时的IO操作tornado的主进程在发起内核IO初始化之后就做不管它了立刻回到web的监控中来去响应别的请求。等内核态的IO完成之后再回调到用户态的主进程处理结果。如果是用同步模型如果是使用单进程多线程则会造成线程切换的开销如果使用单进程单线程像django一样如果有一个请求比较耗时第二个人的请求只会排队等候的Web服务进程绝大多数情况都是被阻塞状态性能就极大地降低了。 最后结合前面的延时1s的例子再加一个即时响应的接口示例 class JustNowHandler(tornado.web.RequestHandler):def get(self):self.write(i hope just now see you) 有兴趣的同学可以自己做实验。 事先约定 同步延时1s的接口为A异步延时1s的接口为B即时响应的接口为C 使用单核模式运行web服务器。 然后在浏览器中以不同的顺序组合运行程序请求接口 先即时再延时 先C再A总共是1s后响应完毕C和AC立刻响应先C再B总共是1s后响应完毕C和BC立刻响应 先延时再即时 先A再C总共是1s后响应完毕C和AC必须等A处理完毕后才能在1s后响应先B再C总共是1s后响应完毕C和BC能立刻响应 同步模型中一旦进程被阻塞掉那么程序的效率就被等待的时间给严重降低了。
http://www.w-s-a.com/news/156978/

相关文章:

  • 泰安高级网站建设推广厦门高端网站建设定制
  • jsp网站开发引用文献手机seo排名
  • 创建一家网站如何创设计网页的快捷网站
  • 1688代加工官方网站h5开发教程
  • 静态网站源码下载网站怎么显示备案号
  • 网站代码设计网站开发维护任职要求
  • 长寿做网站的电话怎么快速刷排名
  • 上海市中学生典型事例网站邯郸全网推广
  • 厦门网站建设680元好男人的最好的影院
  • 石家庄网站建设设计产品设计专业就业前景
  • 网站移动排名做最好最全的命理网站
  • 网站怎么防黑客杭州市做外贸网站的公司
  • 网站推广公司认准乐云seo易语言做网站登录
  • 配色设计网站推荐网站下拉菜单重叠
  • 内容展示型网站特点在北京注册公司需要多少钱
  • h5网站源代码创意设计理念
  • 岳阳网站开发服务推广运营平台
  • 网站开发得多长时间湖南建设人力资源网证书查询
  • 论坛网站开发网络营销是什么时候产生的
  • 帮人做网站赚钱无忧软文网
  • 做网站要不要营业执照重庆网站优化seo公司
  • 学院宣传网站建设简介做网站没灵感
  • 网站建设终稿确认书网站意义学校
  • 3小时网站建设平台专业制作教学课件
  • 曲阜网站建设百度开户现货黄金什么网站可以做直播
  • 比较好的企业建站平台小程序开发外包该注意些什么
  • 建行官网官网网站吗二次元风格wordpress模板
  • 怎样开通自己的网站网址导航哪个主页最好
  • 大良o2o网站建设详情页设计说明怎么写
  • 您与此网站之间建立的连接不安全汽车cms系统是什么意思