对凡人的简单描述

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 Jackson从1.7.1更新到2.8.6 JsonTypeInfo子类型反序列化   Spring WebApp中的java JPA异常处理   java在SwingWorker(doInBackground)中从WorkerThread调用多个方法?   java Android Studio构建到jar   java是添加多个按钮组的更有效方法   java MySQL JDBC连接池最大大小   java如何防止元素<Integer>变成元素<Object>   Java:处理大型XML文件提取数据而不编写状态自动机?   SpringBoot和React Web应用程序中CAS的java重定向问题   需要java算法方面的帮助吗   java在JDK 16中使用PowerMock   java异常错误本机方法签名   在Java Android中将JSON映射到数组/对象   如何打开一个窗口。java程序中的dat文件   java应用程序引擎+Maven+热插拔   java Moxy的getValueByXPath为除根元素以外的所有元素返回null