专栏首页CDA数据分析师Python性能调优的一次记录

Python性能调优的一次记录

最近在grahite上看到响应时间变得很长,虽说之前没有特意去优化性能,但是感觉也不应该这么差才对。

我们的服务器框架用的就是我之前开源的 maple,每个命令字都对应一个入口函数,如下:

所以只要找到一种方法分析这个函数对应的内部调用情况就可以了。

很方便的,python内置了cProfile类来完成我们想要的功能,我给封装成为一个装饰器,用起来更方便一些,当然在django和flask中也可以直接用。

执行到对应的函数后,就会将统计写到函数名对应的stat文件中,比如 login.stat。

相应的,我也封装了一个分析工具:

用起来非常简单,执行一下:

输出结果如下:

可以明显看到时间消耗在 time.sleep 上。

好了,上面只是一个简单的示例,接下来看今天解决的问题的真实情况。

下面两张图分别是牌桌内有2人和7人的情况下的调用图。

2人:

7人:

异常的部分均使用颜色加亮了,可以看出几个端倪:

随着人数变多,有些部分的请求翻了几倍

读取数据库和redis的调用量太大

既然知道了是与存储通信的问题,那么接下来就来看看是哪些地方调用了 get_db_user,get_user_from_db。

cProfile 提供了一个方法:

所以通过这种方法拿到:

所以接下来就去看下上面的代码中这些数据库调用是否是必要就可以了。

基本就是这样了。

另外之前也出现过python内存泄漏的定位,可惜没有写下来文档,只记得是用 objgraph,不过用起来也比较简单,等下次遇到再说吧。

原文链接:http://www.vimer.cn?p=3038

本文分享自微信公众号 - CDA数据分析师(cdacdacda),作者:免费訂阅☛

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2016-02-08

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 案例 | 电子商务网站用户行为分析与服务推荐

    今天分享的案例来自CDA数据分析师就业班第三期远程组学员的毕业答辩,学员代表钱小菲分享了他们的数据报告。 他们以网站运营优化为案例,内容涉及: 对给出的数据进行...

    CDA数据分析师
  • 谷歌教你学 AI-第三讲简单易懂的估算器

    Google Cloud发布了名为"AI Adventures"的系列视频,用简单易懂的语言让初学者了解机器学习的方方面面。 前两期我们分别讲到了机器学习的概念...

    CDA数据分析师
  • 12步轻松搞定Python装饰器

    原文链接:http://www.cnblogs.com/imshome/p/8327438.html 呵呵!作为一名教python的老师,我发现学生们基本上一...

    CDA数据分析师
  • Azure上基于HTTP trigger的Lambda Function

    Azure上通过HTTP方式触发的Lambda Function,函数体直接在浏览器里编写:

    Jerry Wang
  • Redux 原理与实现

    Redux 和 React 之间并没有什么关系,脱离了 React,Redux 也可以与其它的 js 库(甚至是原生 js)搭配使用,Redux 只是一个状态管...

    多云转晴
  • 科大讯飞:我们和华为基因相似,板凳能坐十年冷,如今向C端强劲发力

    这是“AI国家队”科大讯飞正在探索的新路。与互联网不同,在人工智能领域中,To C业务反而未经大范围开拓。

    新智元
  • CTP 看穿式监管版本,收集信息为什么会失败?

    就此我先询问了 CTP 官方交流群,官方给出的解答是,需要链接新的信息采集的库 WinDataCollect。

    JIFF
  • 使用git tag打标签

    轻量级标签就像是个不会变化的分支,实际上它就是个指向特定提交对象的引用。而含附注标签,实际上是存储在仓库中的一个独立对象,它有自身的校验和信息,包含着标签的名字...

    羽翰尘
  • 微服务下持久化观念转变

    过去当我们开发一个企业应用的时候,我们经常首先会考虑的是“我们怎么和数据库交互”?最近的一两年来,人们慢慢的开始转变了,可能要问“我应该用哪种类型的数据库?是用...

    ImportSource
  • react native props上存在的属性,显示不存在

    问题:类型“Readonly<{}> & Readonly<{ children?: ReactNode; }>”上不存在属性“navigation”。ts(2...

    windseek

扫码关注云+社区

领取腾讯云代金券