轻松地将性能计数器添加到代码中

perfcounters的Python项目详细描述


性能计数器

Build StatusCoverage Statuslicense

轻松地将性能计数器添加到python代码中。

perfcounter是一个经过彻底测试的库,它可以方便地向任何python代码添加多个计数器,以测量中间计时和值。它的各种报告机制使分析和报告性能度量变得容易,而不管您的工作流程如何。

安装

安装perfcounters最简单的方法是通过pip:

pip install --user -U perfcounters

可用计数器类型

PerfCounters本机支持两种计数器:timing countersvalue counters

定时计数器使用

计时计数器用于测量代码某一部分中经过的时间。它们以start(...)方法开始,并以stop(...)方法或stop_all(...)方法停止。

下面是一个简单的示例:

counters=PerfCounters()# init counter collectioncounters.start('loop')# start a timing counter#do something in the codecounters.stop('loop')# stop countercounters.report()# report all counters

值计数器用法

用于跟踪值的计数器。它们要么使用set()方法直接设置为给定值,要么使用increment()方法递增。

下面是一个基本示例:

counters=PerfCounters()counters.set('mycounter',39)# set counter value to 39#do something in the codecounters.increment('mycounter',3)# increment counter by 3counters.get('mycounter')#  get the value of the counter42

端到端示例

下面是一个端到端的示例,演示了librairy的所有基本功能:

fromperfcountersimportPerfCountersfromrandomimportrandint# init counterscounters=PerfCounters()num_iterations=randint(100000,1000000)# setting a value counter to a given valuecounters.set('num_iterations',num_iterations)# starting a timing countercounters.start('loop')foriinrange(1000):v=randint(0,1000000)# incrementing a value counter to sum the generated valuescounters.increment('total_value',v)# stopping a timing countercounters.stop('loop')# reporting counterscounters.report()

这个基本示例将产生如下结果:

-=[Value counters]=-

+----------------+-----------+
| name           |     value |
+================+===========+
| total_value    |494280557|
+----------------+-----------+
| num_iterations |372159|
+----------------+-----------+

-=[Timing counters]=-

+--------+------------+
| name   |      value |
+========+============+
| loop   |0.00195169 |
+--------+------------+

note:从技术上讲,报告之前不需要停止计时计数器。如果不这样做,则报告的值将是从开始时间到调用report()函数的时间之间的增量。计数器将一直运行直到停止。

文档advanced usage guide中提供了其他示例,并且API documentation page中提供了所有可用函数的说明

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

推荐PyPI第三方库


热门话题
Java如何添加排除某个数字的随机生成器?   在Eclipse中将所有包集中在一个包中(对于Java项目)   java在部署我的应用程序后无法连接到MySQL   Ntier应用程序中的java NoClassDefFoundException   java泛型类型转换?   使用buildr编译期间的java jar插件   java查找排序数组中重复值的计数   运行Spring Boot cmdline的java示例给出了“找不到run()方法”`   java为什么不调用windowClosed?   java jsch身份验证在没有私钥的情况下失败   java如何在我的jtable中获得100多行?   java在遗留Android Studio项目中创建测试文件夹   java 安卓。所容纳之物res.Resources$NotFoundException:资源ID#0x7f080087   java Eclipse自动格式化变量初始化