群里有个人问我最近怎么不活跃了。 问我这话的人,一看就知道工作不饱和。  话说最近有些忙,走了个小弟, 然后各种开发迭代在后面排着,这堆任务够我跟小弟忙一段时间了。  公司缺高级水平的python程序员, 有兴趣的朋友可以跟我联系。 

该文章写的有些乱,欢迎来喷 ! 另外文章后续不断更新中,请到原文地址查看更新.   http://xiaorui.cc/?p=3503

正题开始:

    这两天调整了全网计算导数的系统,因为系统会跟各个rest api做交互,很多时候不确定在一个时间段内哪类函数,指令调用情况。也不往高大上的吹了,我就是个相当简单的查看函数调用统计信息,包括次数及平均的消耗时间。   我这人一般对于python程序的性能监控,会使用metrics模式来收集信息,但我人太懒了,又想要简单的python函数统计,又不想裁剪公司的python metrics模块。 这边的python metrics为了不影响系统性能做了很多复杂的事项,独立出一个线程,用匿名mmap来实现消息队列,监控数据是定时刷新到ElasticSearch里的。总是有些麻烦,我讨厌麻烦的东西。     

正好以前写过类似的性能数据展现的模块,这次翻弄出来,修一修,扔到了github中。

项目地址, https://github.com/rfyiamcool/func_stats


func_stats  使用表格方式显示函数调用统计, 实现的原理很简单就是通过inspect来打印函数调用栈信息,然后把当前的值扔到一个列表里,后期统计计算。  对于func_stats调用方法并没有使用装饰器来实现,而是创建pointer的来实现, 因为这样更加的方便使用. 这样最大的好处是不管在哪个上下文,你只要复用你定制的pointer就可以增加统计。


需要说明的是这项目本来就很简单,但他会依赖外部的prettytable.py表格模块,为了避免再pip install xxx,  索性直接把该模块引入到项目中. 


运行结果:

完事了, 这项目代码很简单,没什么好讲的,就是调用python inspect模块做调用栈输出。  另外打算再附加一个功能,针对被调用函数做个调用者的排名。  向下面这样…    

结果:




对Python及运维开发感兴趣的朋友可以加QQ群 : 478476595 !!!
{ 2000人qq大群内有各厂大牛,常组织线上分享及沙龙,对高性能及分布式场景感兴趣同学欢迎加入该QQ群 }

另外如果大家觉得文章对你有些作用!   帮忙点击广告. 一来能刺激我写博客的欲望,二来好维护云主机的费用.
如果想赏钱,可以用微信扫描下面的二维码. 另外再次标注博客原地址  xiaorui.cc  ……   感谢!
暂无相关产品

发表评论