原生python中的高动态范围直方图
hdrhistogram的Python项目详细描述
python api
此库的用户通常可以扮演两个角色(通常都是):
- 将值记录到一个或多个直方图中(直方图设置)
- 分析并显示直方图内容和特征(直方图查询)
在分布式情况下,可以远程(可能在多个位置)配置直方图,然后 集中在一个中心位置进行分析。
可以使用hdrhistogram类创建直方图实例,并指定 最小和最大可跟踪值以及所需的精度位数。 例如,创建一个直方图,可以计算[1..3600000]范围内的值,并且 1%精度(例如,跟踪范围[1毫秒..1小时]内的延迟):
histogram = HdrHistogram(1, 60 * 60 * 1000, 2)
默认情况下,计数器为64位,而可以指定16位或32位计数器(字大小 选项设置为2或4字节)。 请注意,此版本中未测试计数器溢出,因此在使用 较小的柜台尺寸。
创建后,很容易将值添加到直方图中:
histogram.record_value(latency)
如果生成值的代码有协调省略, 使用该方法的正确版本(例如,当预期间隔为 10毫秒):
histogram.record_corrected_value(latency, 10)
在任何时候,都可以查询直方图以返回任何属性,例如 记录的值总数或给定百分比的值:
count = histogram.get_total_count() value = histogram.get_value_at_percentile(99.9)
记录的值可以使用记录的迭代器进行迭代:
for item in histogram.get_recorded_iterator(): print('value=%f count=%d percentile=%f' % item.value_iterated_to, item.count_added_in_this_iter_step, item.percentile)
可通过调用压缩方法生成编码/压缩直方图:
encoded_histogram = histogram.encode()
接收时,压缩直方图可以从编码字符串中解码:
decoded_histogram = HdrHistogram.decode(encoded_histogram) count = decoded_histogram.get_total_count()
在聚合的情况下,可以使用decode_和_add方法:
aggregation_histogram.decode_and_add(encoded_histogram)
如果要以标准表格格式打印直方图:
histogram.output_percentile_distribution(file, scaling_ratio)
有关如何使用API的其他帮助:
- 浏览python代码并查看comment部分中每个方法的api文档(如果可用)
- 最好的文档是查看测试目录下的测试代码
测试代码(https://github.com/hdrhistogram/hdrhistogram_py/blob/master/test/test_hdrhistogram.py" rel="nofollow">https://github.com/hdrhistogram/hdrhistogram_py/blob/master/test/test_hdrhistogram.py)几乎涵盖了每个api。