原生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。

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

推荐PyPI第三方库


热门话题
在Eclipse中使用多个调用在一行上打印java   javajackson序列化问题。只有同一实体的第一个对象可以很好地序列化   Java中Deflate函数的等价充气   使用customlitview的java Android actionbar搜索   java“<T>T get()”是什么意思?(它有用吗?)   目标c使用CommonCrypto使用AES256加密,使用OpenSSL或Java解密   java在运行时更新资源文件   fileinputstream在java中访问并将数据写入现有文件   带集群的java Android Mapbox我希望每个功能都有不同的标记图像   java JDK8>JDK10:PKIX路径生成失败:SunCertPathBuilderException:找不到请求目标的有效证书路径   java使用Hk2生成具有指定构造函数参数的实例   为什么这个系统。出来Java中的println()打印到控制台?   java目录和文件名连接不起作用   使用mockito和通配符绘图的java