对任何命令的CPU、内存、磁盘使用率和运行时进行快速而简单的基准测试。

cmdbench的Python项目详细描述


CMDBench公司

对于任何命令的CPU、内存和磁盘使用情况,这是一个快速而简单的基准测试工具。
CLI和库功能都提供了。在

注意:这个库是为^{str1}$Linux操作系统编写的,经过严格测试和维护。但是WindowsmacOS也受支持。创建一个问题,以防遇到问题。在

安装

要从该github存储库安装库,请在终端中执行以下命令:

pip install cmdbench

Python兼容性:2.7或>;=3.4

目录

快速启动:命令行界面

您可以使用python包提供的CLI对任何命令进行基准测试。
在下面的演示中,命令node test.js(稍作修改的test.js)将进行10次基准测试,打印平均资源,并将命令的cpu和内存使用情况的绘图保存到文件plot.png。在

Usage demo

演示的输出绘图文件plot.png如下所示:

Resources plot

快速入门:库

方法一:更简单

您只需使用benchmark_command函数对命令进行基准测试。 对命令stress --cpu 10 --timeout 5进行20次迭代的基准测试。但只打印基准结果中的第一个。在

^{pr2}$

方法二:更具可定制性

您还可以创建一个或多个BenchmarkResults对象,并随时间将基准结果添加到这些对象。
因此,当您根本无法执行时,您不会被迫连续执行命令的基准测试。
当您尝试对需要以特定顺序连续执行或相互依赖的多个命令进行基准测试时,可能会很有帮助。在

>>>fromcmdbenchimportbenchmark_command,BenchmarkResults>>>benchmark_results=BenchmarkResults()>>>for_inrange(20):...new_benchmark_result=cmdbench.benchmark_command("stress --cpu 10 --timeout 5")...benchmark_results.add_benchmark_result(new_benchmark_result)...# The for loop above is equivalent to: benchmark_results = cmdbench.benchmark_command("stress --cpu 10 --timeout 5", iterations_num = 20)>>>benchmark_results.get_averages(){'cpu':{'system_time':0.012500000000000002,'total_time':48.468,'user_time':48.45550000000001,},'disk':{'read_bytes':0.0,'read_chars':5124.0,'total_bytes':0.0,'total_chars':5232.4,'write_bytes':0.0,'write_chars':108.4,},'memory':{'max':2094080.0,'max_perprocess':1020928.0,},'process':{'execution_time':5.0,'stderr_data':None,'stdout_data':None,},'time_series':{'cpu_percentages':array([0.,476.03157895,794.66363636,...,976.05555556,188.97777778,0.])'memory_bytes':array([2093924.84848485,2096074.10526316,2099013.81818182,...,2090552.88888889,1256561.77777778,810188.8])'sample_milliseconds':array([11.42424242,21.73684211,30.90909091,...,4986.44444444,4995.05555556,5000.2])},}

使用IPython笔记本

有关如何使用库和资源图的更全面的演示,请查看提供的ipython notebook。在

文件

benchmark_命令(命令:str,iterations_num=1,raw_data=False)

  • 论据
    • 命令:要处理的目标命令。在
    • 迭代次数:衡量程序资源的次数。在
    • 原始数据:是否显示来自不同来源的所有不同信息,如psutil和GNU Time(如果可用)。在
  • 返回包含相关结果的BenchmarkResults对象。在

benchmark_命令生成器(命令:str,interactions_num=1,raw_data=False)

  • 参数:与benchmark\u命令相同
  • 返回一个generator对象,该对象允许您在每次基准测试迭代完成后获得基准测试结果(对于监视进度和在移动中接收基准数据非常有用)。在

基准测试结果:类

  • 方法:
    • get_first_iteration()
      返回基准结果对象中的第一个迭代结果。在
    • get_iterations()
      返回基准结果对象中所有迭代的结果。在
    • get_values_per_attribute()
      返回包含不同迭代中每种类型值的列表的对象。在
    • get_averages()
      返回不同迭代中所有类型值的平均值。同时计算时间序列数据的平均值。在
    • get_statistics()
      对于不同迭代的所有类型的值返回不同的统计信息(mean、stdev、min、max)。在
    • get_resources_plot(width: int, height: int)
      返回matplotlib figure对象的CPU和目标进程的内存使用情况,这些对象可以在ipython笔记本中查看或保存到图像文件中。在
    • add_benchmark_result(adding_result: BenchmarkResults)
      将另一个BenchmarkResults对象的BenchmarkResults迭代的数据添加到当前对象。在

本chmarkDict:类(defaultdict)

用于表示迭代数据的自定义内部字典类。
这个类中的对象内部的数据可以通过点符号obj.key和键访问obj["key"]来访问

注释

窗口

在windows上进行基准测试时,需要将主代码包装在if __name__ == '__main__':语句周围。在

马科斯

MacOS不允许收集进程特定的磁盘使用情况信息,因此在执行基准测试时,不会在MacOS上报告磁盘使用情况。在

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

推荐PyPI第三方库


热门话题
Android中Twitter共享的java xAuth身份验证?   带有@XmlAnyAttribute和方法的java Bug?(使用JAXB-RI)   安卓 ArrayAdapter导致java。lang.NullPointerException   java如何使用JExel从现有excel文件中删除工作表   java树映射随机停止正确返回值   使用switch和scanner类java使用用户选择   java JCalendar多天选择   Java文件zip正在创建损坏的文件   Ajax调用中的java未定义错误   java处理JSON更改信息的最佳方法   java JNI不适用于AppKit线程   java在运行时为JTable的特定行设置背景色   java如何在for循环中添加按钮?   java在getclass()方法之后强制转换对象