一个小型的Django和IPython兼容的应用程序,用于基准测试数据库和IO繁重的工作。

flame-analyzer的Python项目详细描述


https://travis-ci.com/publons/flame-analyzer.svg?branch=master

这个包是我们在Publons调试环境中经常使用的部分。 它有助于基准测试和解释代码片段中的低效 我们对不同服务响应时间的依赖性。

这个包支持四种上下文管理器

  • 火焰
  • 在线火焰
  • 琼格菲火焰
  • 琼戈因林火焰

它们都服务于同一个用例,向您的机器输出火焰图 你要深入研究并调试你的代码。FileFlame/DjangoFileFlame保存 图形到SVG供您共享,而InlineFlame/djanginlineflame将 在IPython浏览器中渲染它。

示例

将Flame图形保存到SVG可以通过以下基准测试完成

fromflame_analyzerimportFileFlamewithFileFlame('./file_flame_test.svg'):# Some expensive piece of code.[len(u.email)foruinUser.objects.all()]

或者直接转到IPython笔记本

^{pr2}$

也可以通过添加宽度kwarg来配置宽度

withFileFlame('./file_flame_test.svg',flame_width=1200,options={'title':'This is my test title'}):# some expensive piece of code[len(u.email)foruinUser.objects.all()]

扩展

默认情况下,IPython和Django都是可选的导入,这意味着您可以安装 并在终端中使用它来调试你的应用程序代码 安装。可以添加对其他数据库框架的支持,或者如果 希望通过创建自己的钩子钩住上下文enter/exit方法 例如,在输出火焰中添加你想要的类型

fromflame_analyzerimportInlineFlameclassCustomHook:"""
    Append the time taken to execute to the flame graphs title.
    """defbefore(self):self.called_before='< Called before code execution >'defafter(self):self.called_after='< Called after code execution >'defmodify_flame_options(self,flame_options):title=flame_options.get('title','')flame_options['title']=self.called_before+' --- '+self.called_afterreturnflame_optionsclassCustomInlineFlame(InlineFlame):hook_classes=(CustomHook,)withCustomInlineFlame(flame_width=500):total_email_length=0foruinUser.objects.all():total_email_length+=len(u.email)print(total_email_length)

输出IPython查看的图形

https://user-images.githubusercontent.com/6813352/68050764-c1107800-fd4a-11e9-94a2-8ab0bc564617.png
以下项目的学分:

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
virtualbox无法从java移动共享文件夹中的文件   java如何连接Android 4.3.5(GA)的apache HttpClient库?   片段中的java Recyclerview未立即显示警报对话框结果   javac(n,r)计算器程序不工作   java使用BooleanQuery还是编写更多索引?   如何在java中设置y/n循环?   java不兼容的通用通配符捕获   java如何在安卓xml中编写数据绑定时的三元操作条件   java如何使用FileDialog?   java如何创建单元测试来检测是否有人使用错误的编码编辑了文件?   java如何从唯一的字符串生成唯一的int?   java gradletomcatplugin:log4j:WARN找不到记录器的附加程序   java我的动态编程解决方案(Kefa和第一步)在codeforces中有什么问题?   java每天更新两个数据库,使它们都包含相同的有效数据集   java如何检查给定的时间是否在时间限制之间   java在单个json POST上保存父级和子级   java如何获取Solr字段类型