对凡人的简单描述

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如何在arrayList中获取特定列的不同值   CXF GZIP REST JAVA   Java:使用大量半恒定标志检查优化循环中的循环?   java如何在两个应用程序之间进行会话管理?   java SVG文件使用蜡染(但没有轴线)转换为PNG   使用协议缓冲区和内部数据模型的java   java如何在logtag 安卓中打印和查看字符串的值   javascript如何在NodeJs中应用Java/Spring的分层架构?   java Spring URL在JSP中编码不正确   模式对话框后面的java工具提示   java WSRPC生成日历对象而不是日期   在对象外部无法识别类变量   java将图像从文件读/写到BuffereImage的最快方法?   JavaSpring数据存储库对具有不同Id的子类使用抽象超类   安全在Java 5.0上运行web应用程序服务器有危险吗?