轻松地将性能计数器添加到代码中
perfcounters的Python项目详细描述
性能计数器
轻松地将性能计数器添加到python代码中。
perfcounter是一个经过彻底测试的库,它可以方便地向任何python代码添加多个计数器,以测量中间计时和值。它的各种报告机制使分析和报告性能度量变得容易,而不管您的工作流程如何。
安装
安装perfcounters最简单的方法是通过pip:
pip install --user -U perfcounters
可用计数器类型
PerfCounters本机支持两种计数器:timing counters
和value 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中提供了所有可用函数的说明