在py.test执行期间配置cpu和内存使用情况

时间:2016-08-25 14:13:12

标签: python memory cpu-usage pytest

我正面临以下项目。我想在执行一组性能测试套件时创建显示cpu和内存级别的图片。我很感激任何建议。

目前我正在考虑的唯一方法是使用命令top或python模块psutil并与测试并行执行它们。但是我想知道是否已经存在更好的方法,可能是py.test插件。

很高兴能够将这些参数从一个执行与另一个执行进行比较。

测试在Linux(Ubuntu)下执行。

2 个答案:

答案 0 :(得分:1)

有很多方法可以实现这一目标,包括获取广泛的系统统计数据,然后对它们进行平均(顶部),使用处理器硬件计数器(例如使用英特尔VTune)。

psutil看起来非常好。我唯一的评论是确保你进行多次测量,然后平均它们以消除虚假尖峰等。

进行这些测量的其他一些可行方法是/proc/[pid]/stat(参见手册页),time,或者如果您真的很痴迷,可以使用一些编程技术,例如Windows

这里有good discussion关于以编程方式获取基准值的问题。它还讨论了一些你可以进入的陷阱,即使你没有使用编程方法,也应该熟悉这些陷阱。

英特尔有很多关于处理器基准测试的好信息;它是他们的面包和黄油。

我能做的唯一其他评论是你需要仔细选择你的基准。英特尔强调CPU,因为它是他们最擅长的。其他公司也是如此。事实上,根据应用领域,有大量的other important factors可以发挥作用。

查看基于媒体的不同基准。它们可能比简单地基于处理器时间更合适。我不能轻易找到基准,但是bing是一个奇迹。

答案 1 :(得分:1)

有两种有用的工具可用于函数的逐行计时和内存消耗:

安装很简单

$ pip install line_profiler memory_profiler

要进行性能分析,请使用@profile修饰您的函数,然后运行

$ python -m memory_profiler example.py$ python -m line_profiler example.py