跳转到主要内容

"使用和显示字节数据计算"

项目描述

https://secure.travis-ci.org/mulkieran/justbytes.png?branch=master

Justbytes

Justbytes是一个用于处理以字节表示的地址范围计算的模块。其主要特性是从Range类构建的Range对象,这些对象代表精确且有限的字节地址范围。为Range对象定义了各种算术运算。

它的唯一目的是在真实机器上表示真实的地址范围。因此,它不允许范围幂、不精确范围或非有限范围。为了保持通常的算术法则,它允许分数范围。

使用地址范围进行实用计算

在处理地址范围时,数值可以被视为逻辑量,而不是物理量。也就是说,与质量或长度等必须使用具有一定内置误差的测量仪器测量的量不同,地址范围是一个不需要测量即可精确知晓的量。这种精度之所以产生,是因为数字所代表的不那么是内存的数量,而是内存中可寻址的字节大小位置的数目。

因此,如两个范围的加法以及字节不同量级之间的转换(例如从MiB到GiB)必须精确进行。因此,底层实现必须使用精确的字节数表示。由于这个要求,不允许使用浮点数,因为浮点数通常用于表示物理量。

操作

此模块不适应地址范围的多维性。因此,将一个范围对象乘以另一个范围对象将引发错误,因为该模块无法表示字节平方。对于大多数用途,任何会产生多维量的操作都是没有用的。目前没有计划修改此包以适应地址范围的多维性。

许多地址范围的计算是没有意义的。例如,2的幂是某个地址范围,这是一种没有意义的计算。所有这样的操作都会引发错误。

一些具有精确有限值的计算可能会产生无理数结果。例如,虽然2是有理数,但它的平方根是无理数。没有允许在范围对象上进行的操作会导致无理数范围值。结果发现,所有这样的操作要么没有意义,要么会导致无法表示的类型值。

操作的结果类型是范围,在适当的情况下,或是有理数子类型,其中数值是适当的。

浮点数

在范围的计算中无法使用浮点数或十进制数。在需要分数量时,请使用分数对象。因此,Range(0) * 1.2 和 Range(0) * Decimal(“1.2”) 会引发异常,但 Range(0) * Fraction(“1.2”) 是可接受的。

计算范围的表示

范围的表示是按照指定配置计算的。在默认配置中,表示使用IEC单位而不是SI单位。

范围的表示不是一个字符串,而是精确值的结构化表示,以及表示与实际值之间的关系。

此表示暴露给库的客户端,他们可以以任何方式使用它。

显示范围

范围类还具有将范围对象表示为str对象的标准方法。

str表示也可以进行配置。将表示转换为str对象的操作从源代码的其他部分抽象出来,以强调包的客户端可以选择以任何方式表示地址范围。

表示单位

大小模块提供了一套命名前缀,用于SI和二进制单位的所有非分数前缀。没有定义分数前缀。

程序性构建范围

可以从范围对象、数值(例如int或Fraction)或表示此类数值的字符串中构建新的范围对象。字符串可以用来表示分数量,例如“1.2”,但不允许使用浮点数。

构造函数接受一个可选的单位指定符,默认为所有数值的bytes,对于范围对象为None。单位指定符的类型是大小模块提供的一个命名前缀或范围对象。

错误

所有由 justbytes 操作引发的错误都是 RangeError 类的子类型。

内存消耗与地址范围的关系

内存消耗,例如在特定工作负载上执行过程中的内存消耗,是一个量,就像地址范围一样,用字节来指定。然而,内存消耗只是对消耗的物理量的测量。当字节仅用于表示内存消耗时,通常不需要该库提供的特殊处理。通常,内存消耗的测量可以像其他任何物理量一样处理。同样的推理也适用于带宽。对于一个物理类比,可以想象内存消耗类似于体积,例如升,而带宽类似于流量,例如每分钟的升数。

用户输入

此包不处理任意用户输入。预期客户端将任何来源的输入转换为数字和可选的单位说明,这些说明可以直接传递给 Range 构造函数。

替代包

如果您对使用 Python 进行物理(而不是逻辑)量的计算感兴趣,应查阅 pint 包:http://pint.readthedocs.org

打包

如果下游打包程序在打包中包含测试,建议只使用 test_deterministic 模块中的测试,以避免由于 Hypothesis 测试的非确定性行为可能引起的测试失败。

项目详情


下载文件

下载适用于您的平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源代码分布

justbytes-0.15.2.tar.gz (24.5 kB 查看散列)

上传时间 源代码

构建分布

justbytes-0.15.2-py3-none-any.whl (27.2 kB 查看散列)

上传时间 Python 3

支持者

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面