对凡人的简单描述

hume的Python项目详细描述


休谟-对普通人进行简单快速的分析

hume是一个有趣的expirement-tured python包。简而言之,它公开了一个装饰符profile,您可以使用它来度量 函数的执行时间。它使其协议明确,使用简单,配置灵活。

与许多分析库一样,hume增加了开销,这意味着在测试小块代码时,它的测量(通常)比实际执行时间慢。不要将其用于超级科学基准测试。

注意:python>;=3.6必需。

安装

您可以从PyPI

安装hume
pip install hume

或:

pipenv install hume

★休谟.装饰师

★★剖面图

一个简单的decorator来度量函数的执行时间。

  • 支持N次模拟和平均次数。
  • 支持、识别和报告递归函数。
  • (可选)列出提供给修饰函数的argskwargs
  • (可选)显示修饰函数的返回值
  • (可选)在修饰函数中抑制print语句(默认值为False,只为一个模拟报告输出)

profile不会以任何方式修改修饰函数返回的内容。它唯一可能增加的是print语句。

用法

只需装饰任何功能:

fromhume.decoratorsimportprofile@profile(6)defslow_add(num):"""    slow_add sleeps one second and returns num + 1    """time.sleep(1)returnnum+1print(slow_add(3))

让它完成它的工作:

profiling slow_add 
------------------------------------------------
→ name: slow_add
→ simulations: 6
→ average execution time: 1.0034156345 seconds

4
选项和默认值

profile支持以下参数:

  • nums: int = 1→要进行多少次模拟
  • show_args: bool = False→传递给修饰函数的显示args
  • show_kwargs: bool = False→传递给修饰函数的显示kwargs
  • show_result: bool = False→显示修饰函数返回值
  • mute_console: bool = False→在修饰的函数体中抑制print语句。当您有一堆不想仅仅为了测量而删除的这些文件时,它非常有用。1

1即使mute_consoleFalse,递归函数也将正常打印,而不是按nums打印。lt;/small>;

递归

对于递归函数,profile只知道(并且不会污染控制台):

# recursive function@profile(2)deffactorial(n):ifn==1:return1returnn*factorial(n-1)factorial(3)
profiling factorial (recursive function detected) 
------------------------------------------------
→ name: factorial
→ simulations: 2
→ average execution time: 0.00011469949999964868 seconds
更改和覆盖默认值

如果不喜欢profiledefault configuration,可以导入CONFIGdict并重写它们。例如,如果希望profile在默认情况下包含修饰函数中的return,可以执行以下操作:

fromhume.decoratorsimportprofile,CONFIGCONFIG["show_results"]=True@profile(2)defreturn_one():return1# you can always override your own defaults:@profile(show_result=False)defreturn_two_ignored():return2
彩色输出

输出是彩色的,因为优先级:

console output demo

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

推荐PyPI第三方库


热门话题
java我想访问同一类的不同函数中的函数变量   创建字段/值哈希映射的java反射   java Velocity工具向后兼容性?   cmd JAVA运行时错误:发生JNI错误   java spring引导示例hateoas不工作   java为什么Android Studio和gradle可以使用不同的类路径进行单元测试?   java Selenium Firefox驱动程序初始化   java如何在jar中重新定位gradle依赖项的包   java为什么我的单线程hello world应用程序使用22个OS线程?   正则表达式替换Java字符串中的特殊字符   在任何派生类的构造函数之后运行方法的java   java从输入字符串中找出日期   带有libGdx(Java)音乐的安卓studio可以在Android模拟器上工作,但不能在桌面上工作   java我在getconnection的参数方面有错误吗?   java使用JFileChooser访问选定文件   java如何将Json解析为另一个活动   java使用Resources for html和rest server   java更新列表,列表内容来自循环中的方法   java如何在GLSL中读取完整范围的32位整数纹理